ไลบรารีนี้มีไมโครเคอร์เนลสำหรับบูตแอปพลิเคชัน 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] หากคุณมีคำถามใดๆ ต้องการการสนับสนุนทางการค้า หรือเพียงแค่ต้องการทักทาย เรายินดีรับการสนับสนุนทุกรูปแบบ หากคุณมีข้อบกพร่องหรือแนวคิด โปรดอ่านคำแนะนำของเราก่อนที่จะเปิดปัญหา