aura / project-kernel
Aura项目的共享内核文件。
Requires (Dev)
- phpunit/phpunit: ^8.5
This package is auto-updated.
Last update: 2024-08-28 02:44:32 UTC
README
此内核包作为Aura.Cli_Kernel、Aura.Web_Kernel和其他未来内核类型的基础存在。
前言
要求
此内核需要PHP 7.2或更高版本;我们原则上推荐使用最新版本的PHP。如果您对为旧版本的PHP使用此包感兴趣,请使用版本2.x(适用于PHP 5.3+)。
与Aura库包不同,此内核包具有用户空间依赖项,这些依赖项本身可能还有其他依赖项
安装
您可以通过在您的composer.json
文件中包含以下require
元素,使用Composer安装和自动加载此内核
"require": {
"aura/project-kernel": "dev-develop-2"
}
或者,下载或克隆此存储库,然后要求或包含其autoload.php文件。
测试
此内核与PHPUnit具有100%的代码覆盖率。要在命令行中运行单元测试,请在包根目录中运行composer install
,然后运行composer test
。这需要composer
可用。
PSR合规性
此内核试图遵守PSR-1、PSR-2和PSR-4。如果您注意到合规性疏忽,请通过拉取请求发送补丁。
社区
要提问、提供反馈或与其他Aura社区成员交流,请加入我们的Google Group,关注@auraphp或在我们Freenode上的#auraphp聊天。
服务
此包在Container中定义以下服务
aura/project-kernel:logger
:一个Psr\Log\NullLogger实例
请注意,在内核级别设置的服务定义可能在项目级别被重置。
配置
尽管配置是项目级关注的问题,但每个Aura内核和项目都以相同的方式处理它。因此,我们在此提供配置文档以减少重复。
注意:本文件中的示例适用于Aura\Web_Project;根据需要将其替换为Aura\Cli_Project或Aura\Framework_Project。
设置配置模式
使用$_ENV['AURA_CONFIG_MODE']
设置配置模式,通过服务器变量或项目级别的config/_env.php
文件。每个Aura项目都预定义了dev
(本地开发)、test
(共享测试/预发布)和prod
(生产)模式。
配置文件位置
项目级别的配置文件位于项目级别的config/
目录中。每个配置文件都是一个扩展Aura\Di\Config的类,代表一个配置模式。每个配置类有两个方法
-
define()
,允许您在项目的Container中定义参数、设置器和服务;以及 -
modify()
函数允许您从 Container 中提取对象以进行程序性修改。(这发生在 Container 锁定之后,因此您不能在此处添加新服务或更改参数和设置器。)
两阶段配置系统按顺序加载库、内核和项目的所有配置类,然后运行所有 define()
方法,锁定容器,并最终运行所有 modify()
方法。
将配置模式映射到类
配置模式通过项目级别的 composer.json
文件中的 extra:aura:config
块映射到相关的配置类文件。条目键是配置模式,条目值是该模式使用的类。
{ "autoload": { "psr-0": { "": "src/" }, "psr-4": { "Aura\\Web_Project\\_Config\\": "config/" } }, "extra": { "aura": { "type": "project", "config": { "common": "Aura\\Web_Project\\_Config\\Common", "dev": "Aura\\Web_Project\\_Config\\Dev", "test": "Aura\\Web_Project\\_Config\\Test", "prod": "Aura\\Web_Project\\_Config\\Prod" } } } }
配置类通过该项目的 PSR-4 条目自动加载。
"common" 配置类始终加载,无论实际的配置模式如何。例如,如果配置模式是 dev
,则首先加载 Common 类,然后加载 Dev 类。
更改配置设置
首先,打开相关配置模式的配置文件。要更改配置参数、设置器和服务,编辑 define()
方法。要定义完成后程序性地更改服务,编辑 modify()
方法。
添加配置模式
如果您想添加一个新的配置模式,比如 qa
,您需要做三件事。
首先,在 config/
中创建一个配置类。
<?php namespace Aura\Web_Project\_Config; use Aura\Di\Config; use Aura\Di\Container; class Qa extends Config { public function define(Container $di) { // define params, setters, and services here } public function modify(Container $di) { // modify existing services here } } ?>
接下来,编辑项目级别的 composer.json
文件,添加新的配置模式及其相关类。
{ "extra": { "aura": { "type": "project", "config": { "common": "Aura\\Web_Project\\_Config\\Common", "dev": "Aura\\Web_Project\\_Config\\Dev", "test": "Aura\\Web_Project\\_Config\\Test", "prod": "Aura\\Web_Project\\_Config\\Prod", "qa": "Aura\\Web_Project\\_Config\\Qa" } } } }
最后,运行 composer update
,以便 Composer 对自动加载系统进行必要的更改。