首页 > 解决方案 > 如何从 __callStatic() 方法中提取 $parameters 数组,以便使用 __ToString() 方法进一步转换为字符串?

问题描述

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

标签: phpclassstaticpublicself

解决方案


$string是一个array,不是一个String

private static $string = [];

所以你不能把它自己传递给strtolower它。您可能希望将其初始化更改为String

private static $string = "";

$parameters并作为String值而不是数组传递。或者,如果拥有一个 是正确的array,那么您将需要使用它的正确索引。


推荐阅读