“什么是”呢;加上;在PHP中用于什么?

“什么是”呢;加上;在PHP中用于什么?,php,Php,我在雄辩的ORM库中遇到了这一行: return with(new static)->newQuery(); 我以前从未见过使用“with”,在PHP文档中也找不到它。我猜在大多数搜索中,“with”是一个停止词,所以我甚至没有接近 在多年的PHP编程中,我从未遇到过“with”,我觉得自己错过了。它有什么作用?我确实遇到过一条关于ORM的评论,提到“with”在PHP-5.4中不再需要了,但这就是所说的。如果这是正确的,那么最好知道什么是PHP-5.4的等价物 更新:支持答案的详细信息

我在雄辩的ORM库中遇到了这一行:

return with(new static)->newQuery();
我以前从未见过使用“with”,在PHP文档中也找不到它。我猜在大多数搜索中,“with”是一个停止词,所以我甚至没有接近

在多年的PHP编程中,我从未遇到过“with”,我觉得自己错过了。它有什么作用?我确实遇到过一条关于ORM的评论,提到“with”在PHP-5.4中不再需要了,但这就是所说的。如果这是正确的,那么最好知道什么是PHP-5.4的等价物

更新:支持答案的详细信息:-

我在Laravel的Immuminate/Support/helpers.php助手脚本中找到了这个助手函数:

if ( ! function_exists('with'))
{
    /**
     * Return the given object. Useful for chaining.
     *
     * @param  mixed  $object
     * @return mixed
     */
    function with($object)
    {
        return $object;
    }
}
正如在一些答案中提到的。这个全局作用域函数允许在一条语句中创建一个对象并在t中运行方法。安装Laravel时,它(不知何故)在composer autoload_files.php脚本中注册,因此它会在每个页面上加载,即使它不包含任何类


谢谢大家。在现代框架中,不要假设所有内容都必须是名称空间类,这是值得的。

这是一个看起来像这样的函数:

function with($obj) { 
    return $obj; 
}
function with($x){
    return $x;
}
对于
newexampleObj()->newQuery()
,它的版本更短,可读性更强。
with
函数不是PHP内置的。这是PHP5.4之前版本的变通方法。正如PHP 5.4+中@Rocket Hazmat所指出的那样,您可以只做
new ExampleObj()->newQuery()
,因此
with
函数允许您保持可读的向后兼容性。

with函数是Laravel As提供的助手。最好的文档是,正如您所看到的,它只返回对象。在5.4/5.4中,最好只在parens中使用表达式,以避免不必要的函数调用所带来的开销。

我认为在注释中可以一针见血

[我猜]这是一个解决办法,类似于
newfoo()->newQuery()
在某些版本的PHP中不起作用

在PHP 5.4中添加了以下内容:

已添加实例化时的类成员访问权限,例如
(new Foo)->bar()

(来源:)

所以,我假设
看起来是这样的:

function with($obj) { 
    return $obj; 
}
function with($x){
    return $x;
}

在PHP5.4+中,您可以执行
(newstatic)->newQuery()
,但在旧版本中,您不能<代码>with
可能存在,因此您可以使用(新静态)->newQuery()
执行
操作,这将在任何PHP版本中运行。

您确定它不是自定义函数吗?
with
在PHP中不是保留字。他们刚刚用
命名了一个函数
。我猜这是一个类似于
newfoo()->newQuery()
在某些版本的PHP中不起作用的变通方法。。。?(虽然我认为它在5.2中可以工作,所以我不确定是哪个版本)@Izkata:PHP 5.4中添加了执行
new Foo()->newQuery()
的功能。在PHP 5.4+中,您可以执行
new ExampleObj()->newQuery()
,但在旧版本中不行。是的,这是真的。我会改变我的答案。