ไลบรารีนี้มีไมโครเคอร์เนลสำหรับบูตแอปพลิเคชัน PHP เกือบทุกตัว รวมถึง Silex, Symlex (เฟรมเวิร์กสแต็กสำหรับการพัฒนาเว็บแบบ Agile ที่ใช้ Symfony) และคอนโซล Symfony เคอร์เนลนั้นมีเพียงไม่กี่บรรทัดในการตั้งค่าพารามิเตอร์สภาพแวดล้อมจำนวนมากและสร้างอินสแตนซ์คอนเทนเนอร์บริการด้วยสิ่งนั้น
การสร้างอินสแตนซ์เคอร์เนลและการเรียกใช้ 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 (); ไฟล์ YAML ที่อยู่ใน config/ กำหนดค่าแอปพลิเคชัน และการขึ้นต่อกันทั้งหมดเป็นบริการ ชื่อไฟล์ตรงกับชื่อสภาพแวดล้อมของแอปพลิเคชัน (เช่น 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 หรือแอปพลิเคชันบรรทัดคำสั่ง เช่น SymfonyComponentConsoleApplication โดยใช้เคอร์เนลเดียวกัน ผลลัพธ์ที่ได้คือสะอาดกว่าและบางกว่าการบูทสแตรปและการกำหนดค่าที่บ้าคลั่งแบบปกติที่คุณรู้จักจากเฟรมเวิร์กต่างๆ
เคอร์เนลตั้งค่าพารามิเตอร์เริ่มต้นจำนวนหนึ่งที่สามารถใช้สำหรับการกำหนดค่าบริการ ค่าเริ่มต้นสามารถเปลี่ยนแปลงได้ด้วยวิธี setter ของเคอร์เนลหรือเขียนทับ / ขยายโดยไฟล์กำหนดค่าคอนเทนเนอร์และตัวแปรสภาพแวดล้อม (เช่น url: '%env(DATABASE_URL)%' )
| พารามิเตอร์ | วิธีการรับ | วิธีการเซ็ตเตอร์ | ค่าเริ่มต้น |
|---|---|---|---|
| ชื่อแอป | รับชื่อ() | ชื่อชุด() | 'เคอร์เนล' |
| แอป.เวอร์ชัน | รับเวอร์ชัน() | ชุดเวอร์ชัน() | '1.0' |
| แอป.สภาพแวดล้อม | รับสิ่งแวดล้อม() | ตั้งค่าสภาพแวดล้อม() | 'แอป' |
| app.sub_environment | getSubสภาพแวดล้อม() | setSubEnvironment() | 'ท้องถิ่น' |
| แอป.ดีบัก | isDebug() | เซ็ตดีบั๊ก() | เท็จ |
| แอพ.charset | getCharset() | setCharset() | 'UTF-8' |
| app.path | getAppPath() | setAppPath() | - |
| app.config_path | getConfigPath() | setConfigPath() | './config' |
| app.base_path | getBasePath() | setBasePath() | - |
| app.storage_path | getStoragePath() | setStoragePath() | '../พื้นที่จัดเก็บ' |
| app.log_path | getLogPath() | setLogPath() | '../การจัดเก็บ/บันทึก' |
| app.cache_path | รับแคชพาธ() | 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 หรือเพิ่ม "symlex/di-microkernel" ลงในไฟล์ composer.json ของคุณแล้วรัน composer update :
{
"require" : {
"php" : " >=7.1 " ,
"symlex/di-microkernel" : " ^2.0 "
}
}DIMicroKernel ได้รับการดูแลโดย Michael Mayer อย่าลังเลที่จะส่งอีเมลไปที่ [email protected] หากคุณมีคำถามใดๆ ต้องการการสนับสนุนทางการค้า หรือเพียงแค่ต้องการทักทาย เรายินดีรับการสนับสนุนทุกรูปแบบ หากคุณมีข้อบกพร่องหรือแนวคิด โปรดอ่านคำแนะนำของเราก่อนที่จะเปิดปัญหา