php-di/kernel

PHP-DI 应用的内核

0.4.1 2017-07-16 13:45 UTC

This package is auto-updated.

Last update: 2024-09-19 20:43:44 UTC


README

使用 PHP-DI 构建 module 的内核。

Build Status Coverage Status

简介

内核允许您基于 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',
    ]);

创建模块

  1. Composer 包名是模块名
  2. 在您的包中创建一个资源目录,通常为 res/
  3. 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',
]);

环境

应用程序通常需要根据环境行为不同:devprod 等。

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

请注意,环境是可选的