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

Posted

技术标签:

【中文标题】如何从 __callStatic() 方法中提取 $parameters 数组,以便使用 __ToString() 方法进一步转换为字符串?【英文标题】:How to extract the $parameters array from the __callStatic() method for further conversion to a string using the __ToString () method? 【发布时间】:2021-02-16 04:44:00 【问题描述】:
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

【问题讨论】:

【参考方案1】:

$stringarray,而不是 String

private static $string = [];

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

private static $string = "";

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

【讨论】:

以上是关于如何从 __callStatic() 方法中提取 $parameters 数组,以便使用 __ToString() 方法进一步转换为字符串?的主要内容,如果未能解决你的问题,请参考以下文章

php中__call() 和 __callStatic方法的使用

PHP中的__call和__callStatic方法(未看完)

魔术方法之__call与__callStatic方法

PHP魔术方法之__call与__callStatic方法

PHP中的魔术方法总结 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep

PHP中的魔术方法总结 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep