情况:
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);
我如何知道方法
的最后一次调用是否实际上是最后一次?
最佳答案
当一个函数被调用时,它始终是对该函数的最后一次调用。 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);
关于PHP链式方法,如何知道哪一个是最后一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29706690/