框架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' => 'App\Modules\Demo\Controller\HelloController',
'action' => 'hello'
],
];

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

  2.1.2 创建控制器

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

<?php
namespace App\Modules\Demo\Controller;
use Minor\Controller\Controller;
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来创建一个Minor\Framework\App对象。在App类的构造函数中会通过$config数组初始化Minor\Config\Config用来对应用的配置进行管理,通过$providers数组初始化服务容器对象:Minor\Ioc\ServiceContainer用来对应用中的服务提供者进行管理,通过$routes数组创建一个Minor\Route\Router路由对象,通过$events数组来初始化Minor\Event\EventManager用来对事件进行管理。

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

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

Minor【 PHP框架】2.第一个应用与请求的生命周期的更多相关文章

  1. 深入探索Glide图片加载框架:做了哪些优化?如何管理生命周期?怎么做大图加载?

    前言 Glide可以说是最常用的图片加载框架了,Glide链式调用使用方便,性能上也可以满足大多数场景的使用,Glide源码与原理也是面试中的常客. 但是Glide的源码内容比较多,想要学习它的源码往 ...

  2. 【开源java游戏框架libgdx专题】-04-接口介绍及生命周期

    在核心项目中包含6大与操作系统交互的接口,每个后端都实现了这6大接口. Application:运行应用程序并通知API的客户端应用程序级别的事件,提供日志记录设施和查询方法,例如,内存使用. Fil ...

  3. laravel框架一次请求的生命周期

    第一件事所有的请求都会被web服务器(Apache/Nginx)导向public/index.php文件.index.php文件载入Composer生成的自动加载设置,然后从bootstrap/app ...

  4. YII框架一个请求的生命周期

    用户向入口脚本 web/index.php 发起请求. 入口脚本加载应用配置并创建一个应用实例去处理请求. 应用通过请求组件解析请求的路由. 应用创建一个控制器实例去处理请求. 控制器创建一个操作实例 ...

  5. 吴裕雄--天生自然JAVA SPRING框架开发学习笔记:Spring Bean的生命周期

    Spring 容器可以管理 singleton 作用域 Bean 的生命周期,在此作用域下,Spring 能够精确地知道该 Bean 何时被创建,何时初始化完成,以及何时被销毁. 而对于 protot ...

  6. [Django框架 - 静态文件配置、request对象方法初识、 pycharm链接数据库、ORM实操增删改查、django请求生命周期]

    [Django框架 - 静态文件配置.request对象方法初识. pycharm链接数据库.ORM实操增删改查.django请求生命周期] 我们将html文件默认都放在templates文件夹下 将 ...

  7. Flask框架基础--第一篇

    1.flask框架和其他几种框架的优缺点对比 Django : 优点 - 大而全所有组件都是有组织内部开发高度定制化 教科书级别的框架 缺点 - 大到浪费资源,请求的时候需要的资源较高 Flask : ...

  8. Android开源框架Afinal第一篇——揭开圣女的面纱

    Android开源框架Afinal第一篇——揭开圣女的面纱 分类: Android开源框架哪点事2013-09-02 14:25 260人阅读 评论(0) 收藏 举报 Afinal 这是Afinal在 ...

  9. Struts2框架学习第一章——Struts2概述

    本章要点 —  Web应用的发展 —  Model 1和Model 2 —  MVC思想 —  MVC模式的优势 — 常用MVC框架及其特征 —  Struts 1的基本结构及其存在的问题 —  We ...

随机推荐

  1. 【转】Oracle索引失效问题

    转自:http://www.cnblogs.com/millen/archive/2010/01/18/1650423.html 失效情况分析: <> 单独的>,<,(有时会用 ...

  2. 原生AJAX封装

    var ajaxHelper = { /*1.0 浏览器兼容的方式创建异步对象*/ makeXHR: function () { //声明异步对象变量 var xmlHttp = false; //声 ...

  3. 【JBOSS】数据库连接配置小结

    数据库驱动位置: %JBOSS_HOME%\server\default\lib目录下. 数据库配置文件位置:JBOSS_HOME\docs\examples\jca\XXXX-ds.xml < ...

  4. jquery easyui 动态绑定数据列

    function doSearch2() { var strsql = $('#sssql').val(); $.ajax({ url: "../HttpHandler/DownloadHa ...

  5. ASP.NET导出Excel文件

    第一种最常见,并且最简单的方式,直接把GridView导出,导出格式为文本表格形式. protected void btnSaveExcel_Click(object sender, EventArg ...

  6. 简单谈谈如何利用h5实现音频的播放

    作者:白狼 出处:http://www.manks.top/article/h5_audio本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律 ...

  7. dubbo 常见错误

    1. Caused by: java.lang.reflect.MalformedParameterizedTypeException 或 Caused by: java.lang.NoSuchMet ...

  8. The Practical Guide to Empathy Maps: 10-Minute User Personas

    That’s where the empathy map comes in. When created correctly, empathy maps serve as the perfect lea ...

  9. Myeclipse 不能保存汉字

    window-->首选项-->content type-->Text-->Default encoding改为UTF-8,点击update

  10. PHP的数组排序函数

    <?php class order{ /** * * 数组排序 * @param array $arr 例如: * array ( array ( 'deskId' => '460646' ...