このライブラリには、Silex、Symlex (Symfony に基づくアジャイル Web 開発用のフレームワーク スタック)、Symfony Console など、ほぼすべての PHP アプリケーションをブートストラップするためのマイクロカーネルが含まれています。カーネル自体は、多数の環境パラメーターを設定し、それを使用してサービス コンテナー インスタンスを作成するためのわずか数行です。
アプリケーションを開始するには、カーネル インスタンスを作成して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" ] ]
これにより、同じカーネルを使用して、 SilexApplication
、 SymlexApplicationWeb
などの Web アプリケーション、またはSymfonyComponentConsoleApplication
などのコマンドライン アプリケーションをブートストラップするための統一されたアプローチが提供されます。結果は、多くのフレームワークでよく知られている通常のブートストラップや構成の狂気よりもはるかにクリーンで無駄のないものになります。
カーネルは、サービスの構成に使用できるいくつかのデフォルト パラメータを設定します。デフォルト値は、カーネルのセッター メソッドを介して変更することも、コンテナ設定ファイルや環境変数 (例: url: '%env(DATABASE_URL)%'
) によって上書き/拡張することもできます。
パラメータ | ゲッターメソッド | セッターメソッド | デフォルト値 |
---|---|---|---|
アプリ名 | getName() | setName() | 'カーネル' |
アプリのバージョン | getVersion() | setVersion() | 「1.0」 |
アプリ環境 | get環境() | setEnvironment() | 'アプリ' |
app.sub_environment | getSubEnvironment() | setSubEnvironment() | '地元' |
アプリのデバッグ | isDebug() | setDebug() | 間違い |
app.charset | getCharset() | setCharset() | 「UTF-8」 |
アプリのパス | getAppPath() | setAppPath() | './' |
app.config_path | getConfigPath() | setConfigPath() | './config' |
app.base_path | getBasePath() | setBasePath() | 「../」 |
app.storage_path | getストレージパス() | setStoragePath() | '../ストレージ' |
app.log_path | getLogPath() | setLogPath() | '../ストレージ/ログ' |
app.cache_path | getCachePath() | setCachePath() | '../ストレージ/キャッシュ' |
app.src_path | getSrcPath() | setSrcPath() | '../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
を実行するか、composer.json ファイルに「symlex/di-microkernel」を追加して、 composer update
実行します。
{
"require" : {
"php" : " >=7.1 " ,
"symlex/di-microkernel" : " ^2.0 "
}
}
DIMicroKernel は Michael Mayer によって保守されています。ご質問がある場合、商用サポートが必要な場合、または単にご挨拶したい場合は、[email protected] までお気軽に電子メールを送信してください。あらゆる種類の貢献を歓迎します。バグやアイデアがある場合は、問題を開く前にガイドをお読みください。