【发布时间】:2013-11-11 15:51:15
【问题描述】:
我在 eloquent ORM 库中遇到过这一行:
return with(new static)->newQuery();
我以前从未见过“with”,并且在 PHP 文档中找不到它。我猜“with”是大多数搜索中的停用词,所以我什至没有接近。
在多年的 PHP 编程中从未遇到过“with”,我觉得我错过了。它有什么作用?我确实遇到过一个关于 ORM 的评论,在 PHP-5.4 中不再需要提到“with”,但这与所说的一样多。如果那是准确的,最好知道 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 脚本中注册,因此它会在每个页面上加载,即使它不包含任何类。
谢谢大家。不要假设所有东西必须是现代框架中的命名空间类。
【问题讨论】:
-
你确定不是自定义函数吗?
-
with不是 PHP 中的保留字。他们只是将一个函数命名为with。 -
我猜这是一种解决方法,类似于
new Foo()->newQuery()在某些版本的 PHP 中不起作用...? ('虽然我认为它适用于 5.2,所以我不确定是什么版本) -
@Izkata:在 PHP 5.4 中添加了执行
new Foo()->newQuery()的功能。
标签: php