Php 如何从\uuuCallStatic()方法提取$parameters数组,以便使用\uuuToString()方法进一步转换为字符串?

Php 如何从\uuuCallStatic()方法提取$parameters数组,以便使用\uuuToString()方法进一步转换为字符串?,php,class,static,public,self,Php,Class,Static,Public,Self,我不知道如何将值从magic\uu callStatic()方法传递到magic\uu toString() 请告诉我代码有什么问题?为什么不\uuu toString()参见self::$string?$string是一个数组,而不是字符串: class Concatenator { private static $string = []; public static function __callStatic($method, $parameters) {

我不知道如何将值从magic
\uu callStatic()
方法传递到magic
\uu toString()


请告诉我代码有什么问题?为什么不
\uuu toString()
参见
self::$string

$string
是一个
数组,而不是
字符串

class Concatenator
{
    private static $string = [];

    public static function __callStatic($method, $parameters)
    {   
        self::$string = $parameters;
    }

    public function __toString()
    {
        return str_replace(' ', '+', strtolower(self::$string));
    }
}

$concatenated = Concatenator::prepareString('I am concatenated');

echo $concatenated;
private static $string = [];
因此,您不能单独将其传递给strtolower
。您可能希望将其初始化更改为
String

class Concatenator
{
    private static $string = [];

    public static function __callStatic($method, $parameters)
    {   
        self::$string = $parameters;
    }

    public function __toString()
    {
        return str_replace(' ', '+', strtolower(self::$string));
    }
}

$concatenated = Concatenator::prepareString('I am concatenated');

echo $concatenated;
private static $string = [];
并将
$parameters
作为
字符串
值而不是数组传递。或者,如果使用
数组是正确的,则需要使用其适当的索引