Pustaka ini berisi mikro-kernel untuk melakukan bootstrap pada hampir semua aplikasi PHP, termasuk Silex, Symlex (tumpukan kerangka kerja untuk pengembangan Web tangkas berdasarkan Symfony) dan Konsol Symfony. Kernel itu sendiri hanyalah beberapa baris untuk mengatur sekumpulan parameter lingkungan dan membuat instance container layanan dengan itu.
Membuat instance kernel dan memanggil run()
sudah cukup untuk memulai aplikasi:
#!/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 ();
File YAML terletak di config/
konfigurasi aplikasi dan semua dependensinya sebagai layanan. Nama file cocok dengan nama lingkungan aplikasi (misalnya config/console.yml
). Konfigurasi tambahan dapat dimodifikasi untuk sub lingkungan seperti lokal atau produksi dengan menyediakan file konfigurasi yang cocok seperti config/console.local.yml
(lihat parameter app.sub_environment
). File-file ini berada dalam format terdokumentasi dengan baik yang mungkin Anda ketahui dari 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" ] ]
Ini memberikan pendekatan yang seragam untuk bootstrapping aplikasi Web seperti SilexApplication
, SymlexApplicationWeb
atau aplikasi baris perintah seperti SymfonyComponentConsoleApplication
menggunakan kernel yang sama. Hasilnya jauh lebih bersih dan ramping daripada bootstrap dan kegilaan konfigurasi yang biasa Anda ketahui dari banyak kerangka kerja.
Kernel menetapkan sejumlah parameter default yang dapat digunakan untuk mengkonfigurasi layanan. Nilai default dapat diubah melalui metode penyetel kernel atau ditimpa/diperluas oleh file konfigurasi container dan variabel lingkungan (misalnya url: '%env(DATABASE_URL)%'
).
Parameter | Metode pengambil | Metode penyetel | Nilai bawaan |
---|---|---|---|
nama aplikasi | dapatkanNama() | setNama() | 'Inti' |
app.version | dapatkanVersi() | setVersi() | '1.0' |
aplikasi.lingkungan | dapatkan Lingkungan() | set Lingkungan() | 'aplikasi' |
app.sub_environment | dapatkanSubLingkungan() | setSubLingkungan() | 'lokal' |
app.debug | isDebug() | setDebug() | PALSU |
app.charset | dapatkanCharset() | setCharset() | 'UTF-8' |
app.path | dapatkan Jalur Aplikasi() | setAppPath() | './' |
app.config_path | dapatkanConfigPath() | setConfigPath() | './konfigurasi' |
app.base_path | dapatkanBasePath() | setBasePath() | '../' |
app.storage_path | dapatkan Jalur Penyimpanan() | setJalur Penyimpanan() | '../penyimpanan' |
app.log_path | dapatkanLogPath() | setLogPath() | '../penyimpanan/log' |
app.cache_path | dapatkanCachePath() | setCachePath() | '../penyimpanan/cache' |
app.src_path | dapatkanSrcPath() | setSrcPath() | '../src' |
Kelas dasar kernel dapat diperluas untuk menyesuaikannya untuk tujuan tertentu seperti aplikasi konsol yang berjalan lama:
<?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 ' );
}
}
Jika mode debug dinonaktifkan, konfigurasi kontainer layanan di-cache oleh kernel di direktori yang ditetapkan sebagai jalur cache. Anda harus menghapus semua file cache setelah memperbarui konfigurasi. Untuk menonaktifkan caching sepenuhnya, tambahkan container.cache: false
ke parameter konfigurasi Anda:
parameters :
container.cache : false
Untuk menggunakan perpustakaan ini dalam proyek Anda, cukup jalankan composer require symlex/di-microkernel
atau tambahkan "symlex/di-microkernel" ke file composer.json Anda dan jalankan composer update
:
{
"require" : {
"php" : " >=7.1 " ,
"symlex/di-microkernel" : " ^2.0 "
}
}
DIMicroKernel dikelola oleh Michael Mayer. Jangan ragu untuk mengirim email ke [email protected] jika Anda memiliki pertanyaan, memerlukan dukungan komersial atau hanya ingin menyapa. Kami menyambut baik kontribusi apa pun. Jika Anda mempunyai bug atau ide, baca panduan kami sebelum membuka terbitan.