我一直在做方法链接很长一段时间,看起来我越是加入动态的链接方法,它就越像乱七八糟的东西,比如为链添加一个新功能必须与所有其他类型的链一起使用。
目前,我已经放弃了一些较旧的项目,以更简单的方式重新编写它们,我目前正在处理的是:
$psm->select('users')->where('id = 1')->run(function($row){
// do code
});
哪个有效,它会动态创建语句(动态,因为我可以在中间添加另一个链以在语句中创建另一个子句。
我想知道的是,在创建可链接方法时是否存在某种结构,因为当然,除非运行最后一种方法,否则最终需要返回$this
。
我目前用于创建可链接类的简单结构如下:
class foo {
public $temporary = '';
public function add($string) {
$this->temporary .= $string;
return $this;
}
public function ret() {
return $this->temporary;
}
}
所以,在运行时
$foo = new foo;
echo $foo->add('hello ')->add('world!')->ret();
输出" hello world!
"正如您所期望的那样,但是有更好的方法来创建可链接的OOP方法吗?它只是感觉有点hacky。
"是否有某种方法可以在PHP中链接方法?" 是指最安全,最容易管理链接方法的方法。 - 这对我来说很重要,因为在发布我的代码时,我希望它采用正确的社区接受格式。