PHP OOP:方法链接 [英] PHP OOP: Method Chaining
本文介绍了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屋!
查看全文