一 准备
二 引入容器
三 信息调试
四 路由
从混乱到有序
整合逻辑与功能,将不同职责进行分离,避免在项目变得复杂时而变得异常混乱。一个有序的明了的项目结构可以更好的帮我们理解框架的运行原理,上手也更快速。
整理 route
,路由文件中只负责对路由的定义与映射,将 request
放到 index.php
中,在单文件入口中进行处理请求并返回响应,更能体现到单文件入口的概念。
# bootstrap/core/route.php
<?php
$router = new LeagueRouteRouter;
require_once __DIR__ . '/../../routes/web.php';
代码语言:javascript复制# public/index.php
<?php
require_once __DIR__ . '/../bootstrap/app.php';
// dump($_SERVER);
$request = LaminasDiactorosServerRequestFactory::fromGlobals(
$_SERVER,
$_GET,
$_POST,
$_COOKIE,
$_FILES
);
$response = $router->dispatch($request);
// send the response to the browser
(new LaminasHttpHandlerRunnerEmitterSapiEmitter)->emit($response);
创建全局的辅助函数
创建全局的响应函数,用来对请求进行响应。当然可以根据功能封装更多的函数。
首先项目根目录下创建 helpers.php
。
# helpers.php
<?php
if (!function_exists('response')) {
function response($content = '')
{
$response = new LaminasDiactorosResponse;
$response->getBody()->write($content);
return $response;
}
}
在 composer
中注册全局函数,使用 files
的自动加载方式 关于自动加载
# composer.json
"autoload": {
"psr-4": {
"App\": "app"
},
"files": [
"helpers.php"
]
},
更新自动加载文件 composer dump-autoload -o
此时全局函数就已经生效了,现在修改路由文价,使用全局函数来返回数据。
代码语言:javascript复制# routes/web.php
<?php
// map a route
$router->get('/', function ($request) {
return response('hello world');
});
$router->get('/home', function ($request) {
return response('hello home page');
});
此时访问系统首页和 home
路由,会输出响应的信息。说明流程没有问题。