Laravel 原始碼筆記 應用程式 Application

php_yt發表於2020-03-05

介紹

Illuminate\Foundation\Application

$app = new Illuminate\Foundation\Application(
    realpath(__DIR__.'/../')
);

說明
$app 是 laravel 框架的應用程式例項,作為一個容器管理工具,以後文章稱之為 「服務容器」。它是 laravel 的 「地基」。
相關文章
容器類 Container
契約類之 ApplicationContract

速查

namespace Illuminate\Foundation;

class Application extends Container implements ApplicationContract, HttpKernelInterface
{
    //Laravel框架版本
    const VERSION = '5.5.48';
    //Laravel安裝的基本路徑
    protected $basePath;
    //應用程式名稱空間
    protected $namespace;
    //由開發人員定義的自定義資料庫路徑
    protected $databasePath;
    //由開發人員定義的自定義儲存路徑
    protected $storagePath;
    //由開發人員定義的自定義環境路徑
    protected $environmentPath;
    //要在引導期間載入的環境檔案
    protected $environmentFile = '.env';

    //所有已註冊的服務提供商
    protected $serviceProviders = [];
    //載入的服務提供者的名稱
    protected $loadedProviders = [];
    //遞延(defer)服務及其提供者
    protected $deferredServices = [];

    //指示應用程式以前是否已引導
    protected $hasBeenBootstrapped = false;
    //指示應用程式是否已“啟動(boot)”
    protected $booted = false;
    //啟動回撥的陣列
    protected $bootingCallbacks = [];
    //啟動的回撥的陣列
    protected $bootedCallbacks = [];
    //終止(terminat)回撥的陣列
    protected $terminatingCallbacks = [];

    //用於配置日誌(monolog元件)的自定義回撥
    protected $monologConfigurator;

    //建立一個新的照明應用程式例項
    public function __construct($basePath = null){
        if ($basePath) {
            $this->setBasePath($basePath);
        }
        $this->registerBaseBindings();
        $this->registerBaseServiceProviders();
        $this->registerCoreContainerAliases();
    }

    //----------------ApplicationContract----------------
    //獲取應用程式的版本號
    public function version(){};
    //獲取Laravel安裝的基本路徑
    public function basePath($path = ''){};
    //獲取或檢查當前應用程式環境
    public function environment(){};
    //確定我們是否在控制檯中執行
    public function runningInConsole(){};

    //嚮應用程式註冊服務提供者
    public function register($provider, $options = [], $force = false){};
    //註冊所有配置的提供程式
    public function registerConfiguredProviders(){};
    //註冊一個延遲的提供者和服務
    public function registerDeferredProvider($provider, $service = null){};

    //啟動應用程式的服務提供者
    public function boot(){};
    //註冊一個新的啟動監聽器
    public function booting($callback){};
    //註冊一個新的“啟動”監聽器
    public function booted($callback){};
    //獲取快取的services.php檔案的路徑
    public function getCachedServicesPath(){};
    //獲取快取的package .php檔案的路徑
    public function getCachedPackagesPath(){};

    //---------------HttpKernelInterface---------------
    //處理傳入的HTTP請求
    public function handle(SymfonyRequest $request, $type = self::MASTER_REQUEST, $catch = true){};

    //---------------繼承 Container---------------
    //從容器中解析給定的型別
    public function make($abstract, array $parameters = []){};
    //確定給定的抽象型別是否已被繫結
    public function bound($abstract){};

    //---------------其他----------------
    //在容器中註冊核心(core)類別名
    public function registerCoreContainerAliases(){};
    //將基本繫結註冊到容器中
    protected function registerBaseBindings(){};
    //註冊所有基本服務提供者
    protected function registerBaseServiceProviders(){};
    //將給定的提供者標記為已註冊
    protected function markAsRegistered($provider){};
    //載入並引導所有剩餘(remaining)的延遲提供程式
    public function loadDeferredProviders(){};
    //載入延遲服務的提供者
    public function loadDeferredProvider($service){};
    //獲取註冊的服務提供者例項(如果它存在的話)
    public function getProvider($provider){};
    //獲取註冊的服務提供者例項(如果存在的話)
    public function getProviders($provider){};
    //從類名解析服務提供者例項
    public function resolveProvider($provider){};
    //獲取已載入的服務提供程式
    public function getLoadedProviders(){};
    //配置實時(real-time)facade名稱空間
    public function provideFacades($namespace){};
    //啟動給定的服務提供者
    protected function bootProvider(ServiceProvider $provider){};
    //確定應用程式是否已經啟動
    public function isBooted(){};

    //確定所提供的服務是否屬於遞延服務
    public function isDeferredService($service){};
    //設定應用程式的延遲服務
    public function setDeferredServices(array $services){};
    //將服務陣列新增到應用程式的延遲服務中
    public function addDeferredServices(array $services){};
    //獲取應用程式的延遲服務
    public function getDeferredServices(){};
    //獲取應用程式的延遲服務
    public function getDeferredServices(){};

    //確定是否快取了應用程式路由
    public function routesAreCached(){};
    //確定是否為應用程式禁用了中介軟體
    public function shouldSkipMiddleware(){};
    //確定應用程式之前是否已經引導過
    public function hasBeenBootstrapped(){};
    //執行給定的引導類(bootstrapper)陣列
    public function bootstrapWith(array $bootstrappers){}
    //繫結容器中的所有應用程式路徑
    protected function bindPathsInContainer(){};

    //為應用程式呼叫啟動回撥
    protected function fireAppCallbacks(array $callbacks){};
    //在載入環境後註冊要執行的回撥
    public function afterLoadingEnvironment(Closure $callback){};
    //在啟動程式之前註冊要執行的回撥
    public function beforeBootstrapping($bootstrapper, Closure $callback){};
    //註冊一個回撥以在載入程式之後執行
    public function afterBootstrapping($bootstrapper, Closure $callback){};

    //確定應用程式語言環境是否是給定的語言環境
    public function isLocale($locale){};
    //獲取當前應用程式語言環境
    public function getLocale(){};
    //設定當前應用程式語言環境
    public function setLocale($locale){};
    //獲取應用程式的自定義日誌(Monolog)配置器
    public function getMonologConfigurator(){};
    //確定應用程式是否有自定義日誌(Monolog)配置器
    public function hasMonologConfigurator(){};
    //定義一個回撥來配置日誌(Monolog)
    public function configureMonologUsing(callable $callback){};

    //獲取應用程式名稱空間
    public function getNamespace(){};
    //獲取應用程式“app”目錄的路徑
    public function path($path = ''){};
    //設定應用程式的基本路徑
    public function setBasePath($basePath){};
    //獲取路由快取檔案的路徑
    public function getCachedRoutesPath(){};
    //獲取配置快取檔案的路徑
    public function getCachedConfigPath(){};
    //獲取引導目錄的路徑
    public function bootstrapPath($path = ''){};
    //獲取應用程式配置檔案的路徑
    public function configPath($path = ''){};
    //獲取資料庫目錄的路徑
    public function databasePath($path = ''){};
    //設定資料庫目錄
    public function useDatabasePath($path){};
    //獲取語言檔案的路徑
    public function langPath(){};
    //獲取 public/ 網站目錄的路徑
    public function publicPath(){};
    //獲取到儲存目錄的路徑
    public function storagePath(){};
    //設定儲存目錄
    public function useStoragePath($path){};
    //獲取到resources目錄的路徑
    public function resourcePath($path = ''){};

    //確定應用程式是否在本地環境中
    public function isLocal(){};
    //檢測(detect)應用程式的當前環境
    public function detectEnvironment(Closure $callback){};
    //確定是否快取了應用程式配置
    public function configurationIsCached(){};
    //獲取環境檔案目錄的路徑
    public function environmentPath(){};
    //設定環境檔案的目錄
    public function useEnvironmentPath($path){};
    //設定要在引導期間載入的環境檔案
    public function loadEnvironmentFrom($file){};
    //獲取應用程式正在使用的環境檔案
    public function environmentFile(){};
    //獲取環境檔案的完全限定路徑
    public function environmentFilePath(){};
    //確定我們是否正在執行單元測試
    public function runningUnitTests(){};

    //重新整理所有繫結和已解析例項的容器
    public function flush(){};
    //終止應用程式
    public function terminate(){};
    //在應用程式中註冊一個終止回撥
    public function terminating(Closure $callback){};
    //使用給定的資料丟擲一個HttpException
    public function abort($code, $message = '', array $headers = []){};
}
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章