【问题标题】:Meaning of code in Laravel artisan initializationLaravel 工匠初始化中代码的含义
【发布时间】:2015-04-30 09:04:05
【问题描述】:

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

【问题讨论】:

  • 你在哪里找到这个代码。来源链接会很有帮助。
  • 谢谢!我添加了链接

标签: php laravel laravel-4 laravel-artisan


【解决方案1】:

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();

【讨论】:

    【解决方案2】:

    从代码中得到它:

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

    我想你会问更多关于如何的问题。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-19
      • 2020-01-21
      • 2023-03-28
      • 2021-06-12
      • 2016-12-06
      • 2023-03-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多