lastzero/di-microkernel

PHP应用程序的微内核

v2.0.4 2019-01-02 14:30 UTC

This package is not auto-updated.

Last update: 2024-09-14 20:21:01 UTC


README

Latest Stable Version License Test Coverage Build Status Documentation

此库包含一个用于引导几乎任何PHP应用程序的微内核,包括 SilexSymlex(基于Symfony的敏捷Web开发框架栈)和 Symfony Console。内核本身只有几行代码,用于设置一些环境参数并创建一个服务容器实例。

Micro-Kernel Architecture

运行应用程序

创建一个内核实例并调用 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\ApplicationSymlex\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。我们欢迎任何形式的贡献。如果您有错误或想法,在提交问题之前请先阅读我们的 指南