該庫包含一個微內核,用於引導幾乎所有 PHP 應用程序,包括 Silex、Symlex(基於 Symfony 的敏捷 Web 開發框架堆疊)和 Symfony Console。核心本身只需幾行即可設定一堆環境參數並用其建立一個服務容器實例。
建立核心實例並呼叫run()
足以啟動應用程式:
#!/usr/bin/env php
<?php
// Composer
require_once ' vendor/autoload.php ' ;
$ app = new DIMicroKernel Kernel ( ' console ' );
// Run the 'app' service defined in config/console.yml
$ app -> run ();
位於config/
中的 YAML 檔案將應用程式及其所有相依性配置為服務。檔案名稱與應用程式的環境名稱相符(例如config/console.yml
)。透過提供相符的設定檔(如config/console.local.yml
)(請參閱app.sub_environment
參數),也可以針對本機或生產等子環境修改設定。這些檔案的格式與您可能從 Symfony 中了解到的格式相同:
parameters :
app.name : ' My App '
app.version : ' 1.0 '
services :
doctrine.migrations.migrate :
class : DoctrineDBALMigrationsToolsConsoleCommandMigrateCommand
app :
class : SymfonyComponentConsoleApplication
public : true
arguments : [%app.name%, %app.version%]
calls :
- [ add, [ "@doctrine.migrations.migrate" ] ]
這為使用相同核心引導 Web 應用程式(如SilexApplication
、 SymlexApplicationWeb
或命令列應用程式(如SymfonyComponentConsoleApplication
提供了統一的方法。結果比您從許多框架中了解到的通常的引導和配置瘋狂得多,並且更加簡潔。
核心設定了許多可用於配置服務的預設參數。預設值可以透過核心的 setter 方法更改,也可以透過容器設定檔和環境變數覆寫/擴展(例如url: '%env(DATABASE_URL)%'
)。
範圍 | 吸氣法 | 設定方法 | 預設值 |
---|---|---|---|
應用程式名稱 | 取得名稱() | 設定名稱() | '核心' |
應用程式版本 | 取得版本() | 設定版本() | ‘1.0’ |
應用程式環境 | 取得環境() | 設定環境() | '應用程式' |
應用程式.子環境 | 取得子環境() | 設定子環境() | '當地的' |
應用程式偵錯 | 偵錯() | 設定調試() | 錯誤的 |
應用程式字元集 | 取得字符集() | 設定字符集() | 'UTF-8' |
應用程式路徑 | 取得應用程式路徑() | 設定應用程式路徑() | './' |
應用程式配置路徑 | 取得配置路徑() | 設定配置路徑() | './配置' |
應用程式.base_path | 取得基本路徑() | 設定基本路徑() | '../' |
應用程式儲存路徑 | 取得儲存路徑() | 設定儲存路徑() | '../貯存' |
應用程式日誌路徑 | 取得日誌路徑() | 設定日誌路徑() | '../存儲/日誌' |
應用程式快取路徑 | 取得快取路徑() | 設定快取路徑() | '../儲存/快取' |
應用程式.src_path | 取得來源路徑() | 設定來源路徑() | '../src' |
可以擴展內核基類以針對特定目的進行自訂,例如長時間運行的控制台應用程式:
<?php
use DIMicroKernel Kernel ;
class ConsoleApp extends Kernel
{
public function __construct ( $ appPath , $ debug = false )
{
parent :: __construct ( ' console ' , $ appPath , $ debug );
}
public function setUp ()
{
set_time_limit ( 0 );
ini_set ( ' memory_limit ' , ' -1 ' );
}
}
如果關閉偵錯模式,服務容器配置將由核心快取在設定為快取路徑的目錄中。更新配置後必須刪除所有快取檔案。若要完全停用緩存,請將container.cache: false
新增至設定參數:
parameters :
container.cache : false
要在您的專案中使用此程式庫,只需執行composer require symlex/di-microkernel
或將“symlex/di-microkernel”新增至您的composer.json檔案並執行composer update
:
{
"require" : {
"php" : " >=7.1 " ,
"symlex/di-microkernel" : " ^2.0 "
}
}
DIMicroKernel 由 Michael Mayer 維護。如果您有任何疑問、需要商業支援或只是想打個招呼,請隨時發送電子郵件至 [email protected]。我們歡迎任何形式的貢獻。如果您有錯誤或想法,請在提出問題之前閱讀我們的指南。