如何从__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

解决方法

$stringarray,而不是String

private static $string = [];

,因此您无法将其本身传递给strtolower。您可能需要将其初始化更改为String

private static $string = "";

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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...