PHP OOP:方法链接 [英] PHP OOP: Method Chaining

查看:55
本文介绍了PHP OOP:方法链接的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下代码,

<?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);

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

How can I alter this script so I could use this?

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

推荐答案

您不能使用方法链接具有静态方法,因为您不能返回类级别的作用域(return self不会这样做).将您的方法更改为常规方法,并在要允许链接的每个方法中更改return $this.

You cannot use Method Chaining with static methods because you cannot return a class level scope (return self won't do). Change your methods to regular methods and return $this in each method you want to allow chaining from.

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

Notice that you should not use T_PAAMAYIM_NEKUDOTAYIM to access instance methods as it will raise an E_STRICT Notice. Use T_OBJECT_OPERATOR for calling instance methods.

另请参阅:

这篇关于PHP OOP:方法链接的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆