Laravel工匠初始化中代码的含义

时间:2015-02-27 15:32:04

标签: php laravel laravel-4 artisan

我决定看一下工匠如何在Laravel 4.2中初始化并看到函数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

2 个答案:

答案 0 :(得分:2)

with方法是一种辅助方法(Laravel helper methods),它允许您进行方法链。 Es特别在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();

答案 1 :(得分:1)

从代码中评论:

  

创建一个新的控制台应用程序。

我想你会更多地询问如何。

  1. 它调用类构造函数来创建一个新实例。有关构造函数的更多详细信息,请查看symfony class
  2. 使用with()允许链接调用其他方法setLaravel()setExceptionHandler()等,最终确定设置Laravel应用程序实例。
  3. 要详细了解new static,请查看以下问题:New self vs. new static