symlex / di-microkernel
PHP应用程序的微内核
Requires
- php: >=7.1
- psr/container: *
- symfony/dependency-injection: ^4.0
- symfony/yaml: ^4.0
Requires (Dev)
- lastzero/test-tools: ^4.2
README
这个库包含了一个用于启动几乎任何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: Doctrine\DBAL\Migrations\Tools\Console\Command\MigrateCommand app: class: Symfony\Component\Console\Application public: true arguments: [%app.name%, %app.version%] calls: - [ add, [ "@doctrine.migrations.migrate" ] ]
这为使用相同内核启动Web应用程序(如Silex\Application、Symlex\Application\Web)或命令行应用程序(如Symfony\Component\Console\Application)提供了一个统一的方法。结果比您从许多框架中了解到的通常的启动和配置要干净得多。
参数
内核设置了一些默认参数,可用于配置服务。默认值可以通过内核的setter方法更改,或者可以通过容器配置文件和环境变量(例如 url: '%env(DATABASE_URL)%')覆盖/扩展。
自定义
可以通过扩展内核基类来对其进行扩展,以适应特定目的,例如长运行的控制台应用程序。
<?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
要在项目中使用此库,只需运行 composer require symlex/di-microkernel 或将 "symlex/di-microkernel" 添加到您的 composer.json 文件,然后运行 composer update。
{
"require": {
"php": ">=7.1",
"symlex/di-microkernel": "^2.0"
}
}
关于
DIMicroKernel 由 Michael Mayer 维护。如果您有任何问题,需要 商业支持 或只是想打个招呼,请随时发送电子邮件到 hello@symlex.org。我们欢迎各种类型的贡献。如果您有错误或想法,在打开问题之前请先阅读我们的 指南。