php-di / kernel
PHP-DI 应用的内核
0.4.1
2017-07-16 13:45 UTC
Requires
- php: ^7.0
- mindplay/composer-locator: ^2.1.2
- php-di/php-di: ^6.0
Requires (Dev)
- phpunit/phpunit: ^5.7
README
使用 PHP-DI 构建 module 的内核。
简介
内核允许您基于 PHP-DI 模块构建应用程序。
安装
composer require php-di/kernel
使用
内核的角色是创建容器。它通过注册我们请求它加载的所有模块配置文件来实现这一点。
$kernel = new Kernel([ 'twig/twig', 'doctrine/dbal', 'vendor/app', ]); $container = $kernel->createContainer();
如果您想在容器上注册配置,您可以
-
创建一个模块 - 这是推荐的解决方案,阅读下一节了解更多信息
-
或直接设置配置 - 在微框架或微应用中很有用
$kernel = new Kernel(); $kernel->addConfig([ 'db.host' => 'localhost', ]);
安装模块
要安装第三方模块
-
使用 Composer 安装包
-
将其添加到内核将加载的模块列表中,例如
$kernel = new Kernel([ 'twig/twig', ]);
创建模块
- Composer 包名是模块名
- 在您的包中创建一个资源目录,通常为
res/
- 在
res/config/
中创建所需的 PHP-DI 配置文件
就是这样。这是您的包应该看起来像什么
res/
config/
config.php
...
src/
...
composer.json
当模块以这种方式在内核中注册时
$kernel = new Kernel([ 'foo/bar', ]);
vendor/foo/bar/res/config/*.php
中的所有文件都将被加载。
您的主要应用程序也可能包含配置文件:它也是一个模块。由于它可能在 composer.json
中没有包名,您需要设置一个。例如,您可以将其命名为 app
{ "name": "app", "require": { // ... } }
这样,您就可以让内核将您的应用程序作为模块加载
$kernel = new Kernel([ 'app', ]);
环境
应用程序通常需要根据环境行为不同:dev
、prod
等。
PHP-DI 的内核允许您通过简单约定编写特定环境的配置
res/
config/
config.php
env/
dev.php
prod.php
...
然后您可以指示环境加载
$kernel = new Kernel($modules, 'dev'); // dev environment $kernel = new Kernel($modules, 'prod'); // prod environment
请注意,环境是可选的。