该库包含一个微内核,用于引导几乎所有 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]。我们欢迎任何形式的贡献。如果您有错误或想法,请在提出问题之前阅读我们的指南。