有没有办法知道当前的方法是否在链式调用中使用?

时间:2017-11-09 10:28:36

标签: laravel php-7

我希望在链中调用一组函数时执行其他操作。

我在Laravel查询构建器中看到过这种情况,但我无法找到它背后的现有逻辑。它定义了一个集合中的where子句,如果它们是链接的,则另外分开(在whereNested函数回调中)。

$q->whereNested(function (Builder $q) {

    // Generates "Where (first = 1 and second = 2) or third = 3"
    $q->where('first', 1)->where('second', 2);
    $q->orWhere('third', 3);

});

有没有办法在执行函数时知道这一点?如果没有,有人能指出Laravel使用的逻辑吗?

1 个答案:

答案 0 :(得分:1)

您可以使用php函数debug_backtrace来获取所有被调用函数的列表,关于所使用的逻辑,您可以在其中找到

where

orWhere

whereNested

这三种方法都在查询生成器类Illuminate/Database/Query/Builder