PHP“with”关键字 - “with”有什么作用?

时间:2017-06-19 17:02:03

标签: php laravel

有人可以解释PHP“with”的作用吗?

示例开始:

说我有课:

\App\fa_batch

这句话有什么区别:

$w = (with (new \App\fa_batch))
       // uses 'with'
       // returns App\fa_batch 

和这句话?

$n = (new \App\fa_batch)
       // does not use 'with'
       // also returns App\fa_batch 

背景/背景信息:

我无法找到with的文档,可能是因为PHP.net,堆栈溢出和谷歌搜索引擎认为php "with" keyword这样一个常见的搜索短语。

如果上下文有帮助,我从这个答案中看到了with这个词的用法: https://stackoverflow.com/a/33222754/5722034

4 个答案:

答案 0 :(得分:3)

with不是关键字,而是函数。 with(之间的额外空格是红色鲱鱼。

5.2 docs include it in miscellaneous helpersThe source is available on github as well

答案 1 :(得分:1)

https://laravel.com/docs/5.2/helpers#miscellaneous

with()是一个只返回对象的辅助函数。

一个正常的用例我已经看到,当你克隆一个对象时,它允许你链接到那个克隆:

$object = new Object();
with(clone $object)->doSomethingWithoutAffectingTheOriginal();

在您提供的用例中,没有区别。如果您已将实例的创建包装在括号中,则with()完全是多余的。

答案 2 :(得分:0)

with 不是 a PHP keyword

另请查看language reference页面。

答案 3 :(得分:0)

感谢各种海报的答案,我已经意识到这是Laravel的一个功能。以下是Laravel来源:取自vendor/laravel/framework/src/Illuminate/Support/helpers.php

if (! function_exists('with')) {
    /**
     * Return the given object. Useful for chaining.
     *
     * @param  mixed  $object
     * @return mixed
     */
    function with($object)
    {
        return $object;
    }
}

从那里简洁的评论,我知道它用于链接,例如一起查询。 (我使用术语'松散地理解。)