【发布时间】:2014-04-17 17:01:58
【问题描述】:
在使用方法链的 PHP 中,如何在链中调用最后一个方法之后提供函数调用?
同时使用相同的实例(见下文)。这会扼杀实现析构函数的想法。
最终结果是从定义的链属性(当然)中返回值和私有“insert()”的函数调用,而无需公开调用它,无论顺序如何。
注意,如果我将这些方法一起回显 (__toString),它将检索最终生成的唯一代码,这是转换字符串的正常行为。
以下示例:
class object
{
private $data;
function __construct($name) {
// ... some other code stuff
}
private function fc($num) {
// some wicked code here
}
public function green($num) {
$this->data .= fc($num*10);
return $this;
}
public function red($num) {
$this->data .= fc($num*25);
return $this;
}
public function blue($num) {
$this->data .= fc($num*1);
return $this;
}
// how to get this baby to fire ?
private function insert() {
// inserting
file_put_content('test_code.txt', $this->data);
}
}
$tss = new object('index_elements');
$tss->blue(100)->green(200)->red(100); // chain 1
$tss->green(0)->red(100)->blue(0); // chain 2
$tss->blue(10)->red(80)->blue(10)->green(0); // chain 3
链 1、2 和 3 将根据方法中的所有值生成唯一代码并提供操作,例如自动插入数据库或创建文件(在本例中使用)。
如您所见,没有进行字符串设置、强制转换或回显。
【问题讨论】:
-
链 1 和 2 是什么/在哪里?
-
你想在三个方法调用之后运行一些东西?在所有颜色都设置好之后?您想要另一种带有回调的方法吗?在 PHP 神奇地发现你想运行代码之后?另外,析构函数是如何在这一切中发挥作用的?
-
@AmalMurali 将代码向下滚动到末尾。
-
@PeeHaa 正确!包含三个方法调用附加的所有数据的最终回调方法。
-
那么是什么阻止您添加该方法?
标签: php oop methods chaining method-chaining