zoukankan      html  css  js  c++  java
  • Minor【 PHP框架】2.第一个应用与请求的生命周期

    框架Github地址:github.com/Orlion/Minor

    (如果觉得还不错给个star哦(^-^)V)

    框架作者: Orlion

    知乎:https://www.zhihu.com/people/orlion

    Github: https://github.com/Orlion

    2.1 Hello World

      2.1.1 配置路由

      在app/Config/routes.php文件中添加如下配置:

    return [
       ...
        '/helloworld'            =>  [
            'name'                =>    'helloworld',
            'controller'        =>    'AppModulesDemoControllerHelloController',
            'action'            =>    'hello'
        ],
    ];

      这样配置之后当我们在浏览器中访问http://xxx.xxx.xxx/helloworld时就会执行AppModulesDemoControllerHelloController里的hello方法

      2.1.2 创建控制器

      在app/Modules文件夹下创建文件夹: Demo/Controller/,然后创建文件HelloController.php,然后在文件中写:

    <?php
    namespace AppModulesDemoController;
    use MinorControllerController;
    class HelloController extends Controller
    {
        public function hello()
        {
      
        return View::render('Demo:Hello:hello.php', ['name' => 'World']); } }

      2.1.3 创建视图文件

      在app/Modules/Demo/文件夹下创建文件夹/Tpl/Hello/然后创建hello.php:

    Hello <?= $name?>

      然后在浏览器中访问:http://xxx.xxx.xxx/helloworld就可以看到Hello World了

    2.2 请求的生命周期

      发送给应用程序的所有请求都经由 public/index.php 脚本处理。如果使用的是 Apache 服务器,Minor中包含的 .htaccess 文件将对所有请求进行处理并传递给 index.php。这是Minor从接受客户端请求到返回响应给客户端的整个过程的开始。

      当进入indx.php,首先会通过应用配置$config、服务提供者配置$providers、路由配置$routes、事件配置$events来创建一个MinorFrameworkApp对象。在App类的构造函数中会通过$config数组初始化MinorConfigConfig用来对应用的配置进行管理,通过$providers数组初始化服务容器对象:MinorIocServiceContainer用来对应用中的服务提供者进行管理,通过$routes数组创建一个MinorRouteRouter路由对象,通过$events数组来初始化MinorEventEventManager用来对事件进行管理。

      当初始化完成App后,就会通过执行App的handle(MinorRequest $minorRequest)方法来对请求作出处理,处理的过程就是首先通过路由(Router)的from($url)方法解析出请求的控制器和方法,然后执行控制器的方法最后返回一个MinorResponse响应对象。

      最后一步就是通过MinorResponse对象的send()方法将MinorResponse对象发送给请求的客户端。整个请求的生命周期过程就是这样。

  • 相关阅读:
    Django REST framework
    SQL的JOIN语法解析(inner join, left join, right join, full outer join的区别)
    zipfile 解压文件名乱码
    Django开发BUG汇总
    [Java 并发] AQS 是个啥?
    [碎碎念]来水一篇
    [Java 并发]深入浅出 synchronized 与锁
    [Java 并发]你确定你了解 volatile ?
    [Java 并发]为什么会有重排序?和 happens-before 有啥关系
    [Java 并发]带你从源码解读线程组( ThreadGroup )好不好
  • 原文地址:https://www.cnblogs.com/orlion/p/5588945.html
Copyright © 2011-2022 走看看