鍍金池/ 問答/Java  PHP  網(wǎng)絡(luò)安全/ Laravel 的抽象類 Facade 中的 $app 屬性定義在哪?

Laravel 的抽象類 Facade 中的 $app 屬性定義在哪?

Laravel 的抽象類 Facade 如下,注冊(cè)門面都要繼承這個(gè)類,但是這里 $app 屬性沒看到地方有定義,子類也沒有定義,這里的 $app 在哪里定義的?

<?php

namespace Illuminate\Support\Facades;

use Mockery;
use RuntimeException;
use Mockery\MockInterface;

abstract class Facade
{
    /**
     * The application instance being facaded.
     *
     * @var \Illuminate\Contracts\Foundation\Application
     */
    protected static $app;

    /**
     * The resolved object instances.
     *
     * @var array
     */
    protected static $resolvedInstance;

而很多繼承它的類,也都沒有定義 $app 屬性,如 Route 門面:

<?php

namespace Illuminate\Support\Facades;

/**
 * @see \Illuminate\Routing\Router
 */
class Route extends Facade
{
    /**
     * Get the registered name of the component.
     *
     * @return string
     */
    protected static function getFacadeAccessor()
    {
        return 'router';
    }
}
回答
編輯回答
紓惘

Facade中的$app對(duì)象是通過Illuminate\Foundation\Bootstrap\RegisterFacades這個(gè)啟動(dòng)過程進(jìn)行注入的。

啟動(dòng)過程的調(diào)用在響應(yīng)處理核心(Kernel)中,最終調(diào)用為Illuminate\Foundation\Application::bootstrapWith()方法。

2017年2月13日 04:20