引导与配置
最小入口
<?php
require dirname(__DIR__) . '/vendor/autoload.php';
use plato\plato;
plato::registry([
'app_path' => dirname(__DIR__) . '/app',
'env_path' => dirname(__DIR__) . '/.env',
'data_path' => dirname(__DIR__) . '/data',
'debug' => false,
]);
plato::run();
app_path 必填。env_path 默认是项目根的 .env,data_path 默认是 app_path/data。日志和缓存目录从 data_path 派生。
Registry 选项
常用选项包括:
| 选项 | 用途 |
|---|---|
env |
显式环境名;否则读取 APP_ENV,最后使用 pub |
debug |
控制框架调试输出;不传时不修改宿主设置 |
bootstrap |
核心引导前调用的应用回调 |
controller_namespace |
控制器命名空间,默认 control |
session_start |
是否由框架启动 PHP session |
check_purview_handle |
action 前的应用鉴权回调 |
error_handle |
渲染中间件够不到的失败(未知控制器、不可路由的 action)的应用回调 |
reset_handle |
常驻进程中,框架请求状态清空后调用的应用回调 |
cli_auth / cli_csrf |
CLI 与常驻服务入口是否执行鉴权和 CSRF |
reset_handle 不接收参数,用于清理框架无法知晓、由应用持有的静态请求态。调用它时,框架的请求
输入、路由、响应、模板、profiler、缓存 memoization、查询日志、鉴权身份、controller 和 action
都已清空。回调抛出的异常会继续上抛,因为带着未清理的旧状态接收下一次请求并不安全。
配置叠加
配置按“框架 config/ → 应用 config/”递归合并。应用只需放同名 PHP 文件并返回数组。敏感值和环境差异放在 .env,配置文件通过 $_ENV 读取。
.env 提供的是默认值而非覆盖值:进程启动时已经带上的变量——容器、CI 任务或 systemd unit 注入的——保持原值,文件里的同名条目被丢弃。$_ENV 和 getenv() 都会检查,因为 variables_order 决定了环境变量是否会进入 $_ENV。
use plato\config;
$database = config::instance('database')->get('connections.mysql');
$exists = config::instance('config')->has('middleware');
列表按数组下标合并,不适合在框架默认配置中放不可缩短的列表。各框架门面拥有自己的配置段,并提供 configure() 做进程内覆盖以及 reset() 或 reset_config() 恢复文件配置。