PHP-确定何时在方法链中调用最后一个方法
作者:互联网
我正在使用类似的东西作为查询生成器:
$queryHandler = new QueryHandler($connection);
$queryHandler->insert("someDataHere")
->into("someTable")
->when("sleep", 1000);
我希望它在该语句上调用了最后一个方法时执行查询,在本例中为when函数.
/**
* User: Bas
* Date: 8-12-2014
* Time: 20:11
*/
class QueryFunctions
{
.....
/**
* @param int|float|string| $data The data which is getting inserted
*
* @return $this
*/
public function insert($data) {
....
return $this;
}
public function into($table, $execute) {
....
return $this;
}
public function when($condition, $functionArgument) {
switch($condition) {
case "wait":
.....
break;
}
return $this;
}
/**
* To prevent instantiation
*/
private function __construct() {
}
}
我怎样才能做到这一点?
解决方法:
不…一般
我认为您无法知道连锁店已经结束.不要忘记您的代码直接等于:
$queryHandler = new QueryHandler($connection);
$queryHandler->insert("someDataHere");
$queryHandler->into("someTable");
$queryHandler->when("sleep", 1000);
即使这种逻辑可行,也可能并不总是很方便.当您想稍后执行准备好的查询时,可能会遇到这种情况.
而是使用另一种方法发送查询:
$queryHandler->insert("someDataHere")
->into("someTable")
->when("sleep", 1000);
$queryHandler->start(); //will execute conditions (such as sleep) and then send query
滴答回调
在PHP中使用tick callback
可能存在令人毛骨悚然的解决方法.您可以在返回$this之前先分配一个函数,然后在每一个滴答中检查代码是否仍在类的范围内.一旦找到它,就可以执行查询.
令人毛骨悚然,但有可能.
标签:method-chaining,oop,php 来源: https://codeday.me/bug/20191028/1955773.html