我决定看看如何在Laravel 4.2中初始化artisan,并看到函数make($app)
public static function make($app)
{
$app->boot();
$console = with($console = new static('Laravel Framework', $app::VERSION))
->setLaravel($app)
->setExceptionHandler($app['exception'])
->setAutoExit(false);
$app->instance('artisan', $console);
return $console;
}
我不是真正的PHP新手,但也不是大师。。。我无法完全理解的含义(从PHP的角度来看)
$console = with($console = new static('Laravel Framework', $app::VERSION))
->setLaravel($app)
->setExceptionHandler($app['exception'])
->setAutoExit(false);
这是指向源的链接https://github.com/laravel/framework/blob/4.2/src/Illuminate/Console/Application.php
with
方法是一个辅助方法(Laravel-helper方法),它允许您进行方法链。特别是在PHP 5.3.X环境中
从文件
$value = with(new Foo)->doWork();
这将在类Foo之外创建一个新实例,并在Foo 上调用方法do
来自源
if ( ! function_exists('with'))
{
/**
* Return the given object. Useful for chaining.
*
* @param mixed $object
* @return mixed
*/
function with($object)
{
return $object;
}
}
当您为它提供一个对象->的实例时,它将返回这个实例。现在您可以调用该对象的方法或属性了。
这将与执行以下操作相同:
$foo = new Foo();
$value = $foo->doWork();
从代码注释来看:
创建一个新的Console应用程序。
我想你会问更多关于如何。
- 它调用类构造函数来创建一个新实例。有关构造函数的更多详细信息,请查看symfony类
- 使用
with()
可以链接调用额外的方法setLaravel()
、setExceptionHandler()
等,以完成Laravel应用程序实例的设置
要了解更多关于new static
的信息,请复习这个问题:新自我与新静态。