Laravelベースのアプリケーションでは、WEBサーバーが外部からリクエストを受信すると、アプリケーションのルートディレクトリにあるpublic/index.php
へのリクエストを解析します。
リーリー | リーリー |
コードの21行目
リーリー | リーリー |
によって提供されるクラスローダーが Laravel アプリケーションに導入されたため、Laravel アプリケーションはクラスを手動でロードする必要がなくなりました。そのローディング原理はこの研究の目的ではないので、単にこの方法で使用してください。次のコードが焦点です。 Composer
IlluminateFoundationApplication クラス
コードの 35 行目
リーリー |
Laravelソースコード解釈-app.php (laravel_app.php)ダウンロード
リーリー |
$app
是一个 IlluminateFoundationApplication
工法から見ると:
IlluminateFoundationApplication コンストラクター
リーリー |
registerBaseBindings
IlluminateFoundationApplication#registerBaseBindings
リーリー |
static::setInstance($this)
所做的就是将 $this
赋值给自身的 instance
静态变 量。重点看 $this->instance('app', $this)
instance
IlluminateContainerContainer#instance
リーリー |
IlluminateFoundationApplication#registerBaseServiceProvidersApplication
类中,接下来调用了这个方法 $this->registerBaseServiceProviders()
IlluminateEventsEventServiceProvider
IlluminateRoutingRoutingServiceProvider
これらのサービスプロバイダーは IlluminateSupportServiceProvider
的子类,它接受一个 Application
对象作为构造函数参数,存储在实例变量 $app
にあります
IlluminateEventsEventServiceProvider#登録register
方法中,每个ServiceProvider被调用了自身的 register
方法。首先看 看 EventServiceProvider
もう一度見てください IlluminateEventsDispatcher
对象以键 events
:
IlluminateRoutingRoutingServiceProvider#登録IlluminateRoutingRoutingServiceProvider