前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >制作一个PHP简易框架(五)-- 优化 response

制作一个PHP简易框架(五)-- 优化 response

作者头像
caoayu
发布2021-03-01 10:52:53
3220
发布2021-03-01 10:52:53
举报
文章被收录于专栏:caoayu的分享caoayu的分享

一 准备

二 引入容器

三 信息调试

四 路由

从混乱到有序

整合逻辑与功能,将不同职责进行分离,避免在项目变得复杂时而变得异常混乱。一个有序的明了的项目结构可以更好的帮我们理解框架的运行原理,上手也更快速。

整理 route ,路由文件中只负责对路由的定义与映射,将 request 放到 index.php 中,在单文件入口中进行处理请求并返回响应,更能体现到单文件入口的概念。

代码语言:javascript
复制
# bootstrap/core/route.php
<?php

$router = new League\Route\Router;

require_once __DIR__ . '/../../routes/web.php';

代码语言:javascript
复制
# public/index.php
<?php

require_once __DIR__ . '/../bootstrap/app.php';

// dump($_SERVER);
$request = Laminas\Diactoros\ServerRequestFactory::fromGlobals(
    $_SERVER,
    $_GET,
    $_POST,
    $_COOKIE,
    $_FILES
);
$response = $router->dispatch($request);

// send the response to the browser
(new Laminas\HttpHandlerRunner\Emitter\SapiEmitter)->emit($response);
创建全局的辅助函数

创建全局的响应函数,用来对请求进行响应。当然可以根据功能封装更多的函数。

首先项目根目录下创建 helpers.php

代码语言:javascript
复制
# helpers.php
<?php

if (!function_exists('response')) {
    function response($content = '')
    {
        $response = new Laminas\Diactoros\Response;
        $response->getBody()->write($content);
        return $response;
    }
}

composer 中注册全局函数,使用 files 的自动加载方式 关于自动加载

代码语言:javascript
复制
# 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 路由,会输出响应的信息。说明流程没有问题。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-02-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 从混乱到有序
    • 创建全局的辅助函数
    相关产品与服务
    容器服务
    腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档