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 对自动加载系统进行必要的更改。