您好,欢迎访问一九零五行业门户网

Minor【 PHP框架】1.简介

1.1 minor是什么
minor是一个简单但是优秀的php框架,it just did what a framework should do. 只做一个框架应该做的,简单而又强大!
框架github地址:github.com/orlion/minor
(如果觉得还不错给个star哦(^-^)v)
作者: orlion
知乎:https://www.zhihu.com/people/orlion
github: https://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 = \minor\framework\app::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 = \minor\httpkernel\minorrequestbuilder::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 请忽视以上吹牛逼字段
恩!就是请忽视。别怪我没提醒
其它类似信息

推荐信息