Laravel artisan 初始化中代码的含义

Meaning of code in Laravel artisan initialization

我决定查看 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);

这是 link 的来源 https://github.com/laravel/framework/blob/4.2/src/Illuminate/Console/Application.php

with 方法是一种辅助方法 (Laravel helper methods),它允许您进行方法链。 es专门在PHP5.3.X环境

来自文档

$value = with(new Foo)->doWork();

这会在 class Foo 上创建一个新实例并在 Foo

上调用方法 do

来源

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

当你向它提供一个对象的实例时 -> 它会 return 这个实例。现在您可以调用此对象的方法或属性了。

这与执行以下操作相同:

 $foo = new Foo();
 $value = $foo->doWork();

来自代码注释:

Create a new Console application.

我想你会问更多关于如何做的事情。

  1. 它调用class 构造函数来创建一个新实例。查看 symfony class 以获取有关构造函数的更多详细信息。
  2. 使用 with() 允许链接调用其他方法 setLaravel()setExceptionHandler() 等,最终设置 Laravel 应用程序实例。

要了解有关 new static 的更多信息,请查看此问题:New self vs. new static