1

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

4

2 に答える 2

2

withmethod は、メソッドチェーンを可能にするヘルパーメソッド ( Laravel ヘルパーメソッド) です。Es 特に PHP 5.3.X 環境で

ドキュメントから

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

これにより、クラス Foo から新しいインスタンスが作成され、メソッド do が Foo で呼び出されます。

ソースから

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();
于 2015-02-27T15:52:22.447 に答える
1

コードのコメントから:

新しいコンソール アプリケーションを作成します。

方法についてもっと質問することを想像します。

  1. クラス コンストラクターを呼び出して、新しいインスタンスを作成します。コンストラクターの詳細については、symfony クラスを確認してください。
  2. を使用すると、Laravel Application インスタンスの設定を完了するwith()追加のメソッドsetLaravel()、などをチェーン呼び出しできます。setExceptionHandler()

詳細については、次のnew static質問を確認してください: New self vs. new static

于 2015-02-27T15:57:10.373 に答える