情况:
Class MyClass {
...
public function method($args) {
// code
...
if (is the last call) {
return $something;
}
return $this;
}
...
}
....
$obj = new MyClass;
$obj->method($some_args)->method($something_else)->method($more_data);
我怎么知道method
的最后一次电话是否真的是最后一次?
答案 0 :(得分:3)
当一个函数被调用时,它就是那个时刻总是最后一次调用该函数。 PHP不知道你的脚本是否会在那之后实际执行另一个函数调用。
据说你可以绕过使用__destruct魔术功能,例如:
<?php
Class MyClass {
private $method_queue = array();
public function method($args) {
array_push($this->method_queue, $args);
return $this;
}
private function _method($args, $is_last) {
// do actual stuff
echo $args;
if ($is_last) {
echo "LAST";
// do more stuff
}
}
public function __destruct()
{
foreach ($this->method_queue as $k=>$args) {
$this->_method($args, count($this->method_queue)-1==$k);
}
}
}
$obj = new MyClass;
$obj->method(1)->method(2)->method(3);