首页 > 编程 > PHP > 正文

Minor PHP框架 1.简介

2020-03-22 18:38:40
字体:
来源:转载
供稿:网友
  • 1.1 Minor是什么

      Minor是一个简单但是优秀的html' target='_blank'>PHP框架,It just did what a framework should do. 只做一个框架应该做的,简单而又强大!

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

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

      作者: Orlion

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

      Github: http://github.com/Orlion

      

    1.2 Minor有什么

      1.2.1 Minor主要提供了:

    MVC分层结构(实际上是没有Model层的,用户可以自己任意创建) Ioc(体现在Minor中就是类似于symfony/laravel的服务容器) Event(类似于symfony/laravel中的事件机制,是一个观察者模式的具体实现) Proxy(代理,是一个代理模式的具体实现,本人在创造Minor时是想实现类似Spring的AOP功能的,但是在写的时候发现如果要实现AOP则配置文件势必会变得冗杂,不利于开发所以就放弃了AOP,而提供了一个Proxy类)

      

      1.2.2 Minor为什么只提供了这么点东西?

      现在的PHP框架大多很臃肿,提供了各种功能,在本人看来这只是在重复造轮子(虽然写框架也是在重复造轮子...),框架只需要提供给用户一个架子和一些工具即可,不应该给用户一大堆东西(一大堆重复造的轮子),不应该捆绑用户而应该给用户极大自由,这样也会使用户更容易上手。个人觉得java的Spring框架就是一个很不错的框架,足够简单,足够强大,小即是美!而Minor就是在这种思想下诞生的框架。没有各种乱七八糟的分页、ORM、模板引擎、日志、队列等功能,就是一个很纯粹的“架子”。

      1.2.3 优点

      快! 性能高! 简单! 容易上手! 结构清晰!

      小即是美!

    1.3 安装

      只需从github上(github.com/Orlion/Minor) git clone或者直接复制zip压缩包然后解压到项目中即可。

      Minor框架通过设置 public/.htaccess 文件去除链接中的index.php。 如果你你的服务器使用的是 Apache,请确保开启 mod_rewrite 模块。

      如果是 Nginx 服务器,将下列指令放到网址的配置文件中:

    location / {    try_files $uri $uri/ /index.php?$query_string;}

      这样当你访问http://localhost/public/时就可以看到安装成功的画面了。 (当然你也可以配置一下把public去掉) 

    1.4 Minor是如何运转的

      1.4.1 整体流程

      以访问网址http://www.servername.com/demo/test为例:

    所有请求重定向到public/index.php文件 定义全局变量
    define('APP_DIR', realpath(__DIR__.'/../app/') .DIRECTORY_SEPARATOR);define('PUBLIC_DIR', realpath(__DIR__) .DIRECTORY_SEPARATOR);define('VENDOR_DIR', realpath(__DIR__.'/../vendor/') .DIRECTORY_SEPARATOR);define('ROOT_DIR', realpath(__DIR__.'/../') .DIRECTORY_SEPARATOR);
    根据配置文件来创建App对象:$app
    $app = MinorFrameworkApp::getInstance(    $config     = ['app' => require APP_DIR . 'Config/app.php', 'test' => require APP_DIR . 'Config/test.php'],    $providers  = require APP_DIR . 'Config/providers.php',    $routes     = require APP_DIR . 'Config/routes.php',    $events     = require APP_DIR . 'Config/events.php');
    App处理请求生成MinorResponse对象
    $response = $app->handle(    $request = MinorHttpKernelMinorRequestBuilder::buildMinorRequest());
    向用户返回响应
    $response->send();

      1.4.2 App是如何处理请求的

       public function handle(MinorRequest $minorRequest)    {        $minorResponse = MinorResponse::getInstance();        $this->minorRequest = $minorRequest;        list($controllerName, $actionName, $params) = $this->router->dispatcher($minorRequest->getUrl());        if (!($controllerName && $actionName && is_array($params))) {            if (!Config::get(['app' => 'DEBUG']) && ($handler = Config::get(['app' => '404_HANDLER'])) && ($handler instanceof Closure)) {                $handler($minorRequest->getRequestUrl());            } else {                throw new RouteException('404 Not Found');            }        } else {            $minorResponse = $this->invoke($controllerName, $actionName, $params);        }        return $minorResponse;    }
    初始化一个默认的响应对象
    $minorResponse = MinorResponse::getInstance();
    调用Router的dispatcher($url)方法根据路由配置获取url对应的控制器和方法以及参数
    list($controllerName, $actionName, $params) = $this->router->dispatcher($minorRequest->getUrl());
    执行控制器的制定方法,并返回响应对象
    $minorResponse = $this->invoke($controllerName, $actionName, $params);return $minorResponse;

    1.5 请忽视以上吹牛逼字段

      恩!就是请忽视。别怪我没提醒

      

    PHP编程

    郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

  • 发表评论 共有条评论
    用户名: 密码:
    验证码: 匿名发表