编程语言
首页 > 编程语言> > PHP-确定何时在方法链中调用最后一个方法

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