PHP 面向对象 : Method Chaining

标签 php oop method-chaining

我有以下代码,

<?php
class Templater
{
    static $params = array();

    public static function assign($name, $value)
    {
        self::$params[] = array($name => $value);
    }

    public static function draw()
    {
        self::$params;
    }
}


 $test = Templater::assign('key', 'value');
 $test = Templater::draw();
 print_r($test);

如何更改此脚本以便我可以使用它?

$test = Templater::assign('key', 'value')->assign('key2', 'value2')->draw();
print_r($test);

最佳答案

您不能使用 Method Chaining使用静态方法,因为您不能返回类级别范围(return self 不会)。将您的方法更改为常规方法,并在您希望允许链接的每个方法中返回 $this

请注意,您不应使用 T_PAAMAYIM_NEKUDOTAYIM 访问实例方法,因为它会引发 E_STRICT 通知。使用 T_OBJECT_OPERATOR 调用实例方法。

另见:

关于PHP 面向对象 : Method Chaining,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2990952/

相关文章:

php - 如何在 Codeigniter 的 Datamapper ORM 中嵌套 WHERE 参数?

java - 应用程序设置设计方法

java - 在 Java 中调用多个方法

python - 如何使用方法链从 pandas DataFrame 中删除行?

php - 弹出数组的第一个元素而不是最后一个(反转 array_pop)?

php - Android 中的 rawurlencode 等价物

c++ - 在自身内部交换一个对象

python-3.x - 将列表从另一个类传递给类内的方法,以便修改所述列表并传回 Python 中的原始类

python - 我可以在方法链中使用 pd.drop 来删除特定行吗?

php - 在 PHP 的正则表达式中旋转