问题描述
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;
我不知道如何将值从魔术__callStatic()
方法传递到魔术__toString()
。
请告诉我代码有什么问题?为什么__toString()
看不到self::$string
?
解决方法
$string
是array
,而不是String
:
private static $string = [];
,因此您无法将其本身传递给strtolower
。您可能需要将其初始化更改为String
:
private static $string = "";
,并将$parameters
作为String
值而不是数组传递。或者,如果拥有array
是正确的,那么您将需要使用其正确的索引。