日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

Minor【 PHP框架】1.简介

發布時間:2023/12/15 php 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Minor【 PHP框架】1.简介 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.1 Minor是什么

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

  (如果覺得還不錯給個star)

  

1.2 Minor有什么

  1.2.1 Minor主要提供了

  • MVC分層結構(實際上是沒有Model層的,用戶可以自己任意創建)
  • Ioc(體現在Minor中就是類似于symfony/laravel的服務容器)
  • Event(類似于symfony/laravel中的事件機制,是一個觀察者模式的具體實現)
  • Proxy(代理,是一個代理模式的具體實現,本人在創造Minor時是想實現類似Spring的AOP功能的,但是在寫的時候發現如果要實現AOP則配置文件勢必會變得冗雜,不利于開發所以就放棄了AOP,而提供了一個Proxy類)
  • 符合PSR4
  •   

      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; }

      下面是我的配置:

    server{listen 80;server_name www.minor.com;root html/minor/public;location / {index index.php;try_files $uri $uri/ /index.php; }location ~ \.php$ {fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params; } }

    ?

      這樣當你訪問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 配置

      1.5.1 讀取與設置配置

      有時你需要在程序執行階段訪問配置的值。你可以使用 Config 類:

    Config::get(['app' => 'TIMEZONE']);

      這樣你就可以獲取app/Config/app.php配置文件中TIMEZONE的配置項值。(請注意,這里不一定是app.php,請觀察本文1.4.1中的步驟3中可以看到在構建$app這個對象時傳了一個參數:$config = ['app' => require APP_DIR . 'Config/app.php' ...

      在這里'app' 指向了app/Config/app.php文件,當然你也可以指向其他文件(eg: app_dev.php)這樣再當你執行Config::get(['app' => 'TIMEZONE'])時就會從app_dev.php文件中獲取TIMEZONE這個配置項的值了)。

      

      你也可以指定一個默認值,如果配置選項不存在它將被返回:

    Config::get(['app' => 'TIMEZONE'], 'UTC');

      注意“['xxx' => 'xxx']”語法風格可以用于訪問不同文件里的值,你也可以在程序執行階段設置配置的值:

    Config::set(['test' => 'key'], 'value');

      

      1.5.2 配置項

        1.5.2.1 應用配置

        一些常用的應用配置,你也可以添加自己的配置項。

    'CHARSET' => 'UTF-8', // 設置charset'TIMEZONE' => 'PRC', //設置時區'SESSION_START' => true, // 設置是否自動開啟session,當開啟后就可以從MinorRequest對象中通過getMinorSession()方法獲取當前session對象'DEBUG' => true, // 設置是否開啟DEBUG模式,如果開啟則程序中發生的錯誤就會全部顯示出來,如果設置為false或者不設置則當發生錯誤或異常時就會執行以下的全局錯誤處理函數和全局異常處理函數。

    ?

        1.5.2.2 全局異常處理

        當DEBUG為false并且應用拋出異常時就會執行配置的這個匿名函數,你可以在這個函數里做任何操作,比如向管理員發送通知郵件或者記錄日志等等

    'EXCEPTION_HANDLER' => function($e){header('HTTP/1.1 500 Internal Server Error');exit(require APP_DIR . 'View/exception.php');},

    ?

    ?

    ?

        1.5.2.3 全局錯誤處理

        當DEBUG為false并且應用發生語法錯誤時就會執行配置的這個匿名函數,你可以在這個函數里做任何操作,比如向管理員發送通知郵件或者記錄日志等等

    'ERROR_HANDLER' => function($errno, $errstr, $errfile, $errline){header('HTTP/1.1 500 Internal Server Error');exit(require APP_DIR . 'View/error.php');},

    ?

    ?

    ?

        1.5.2.4 404處理

        當DEBUG為false并且應用沒有匹配到響應的路由時就會執行這個匿名函數,你可以在這個函數里顯示一個404頁面。

    '404_HANDLER' => function($url){header('HTTP/1.1 404 Not Found');header("status: 404 Not Found");exit(require APP_DIR . 'View/404.php');},

    ?

    ?

    ?

        1.5.2.5 變量過濾器

        當通過$minorRequest->get('param_name'))獲取get參數或者通過$minorRequest->post('param_name')時,框架會自動調用這個函數對$_GET['param_name']或者$_POST['param_name']做處理后返回

    'DEFAULT_FILTER' => function($param){return htmlspecialchars($param);},

    ?

    1.6 請忽視以上吹牛逼字段

      恩!就是請忽視。別怪我沒提醒

      

    轉載于:https://www.cnblogs.com/orlion/p/5558842.html

    總結

    以上是生活随笔為你收集整理的Minor【 PHP框架】1.简介的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 亚洲大片免费看 | 日韩欧美无 | 国产精品久久在线 | 欧美日韩国产麻豆 | 韩国av在线| 碰在线视频 | 色播视频在线 | 伊人手机视频 | 日韩一区二区三区在线免费观看 | 一级黄色小视频 | 特级大胆西西4444人体 | 亚洲伦理自拍 | av网站在线观看不卡 | 97高清国语自产拍 | 欧美日韩一区三区 | 特大黑人巨交吊性xxxxhd | 修女也疯狂3免费观看完整版 | 在线看片你懂得 | 人妻偷人精品一区二区三区 | 日韩二区三区四区 | 91丨国产丨捆绑调教 | 综合网天天 | jizz18欧美18| 高中男男gay互囗交观看 | 欧美成人秋霞久久aa片 | 中文字幕有码在线播放 | 日韩欧美大片 | 国模丫头1000人体 | www夜片内射视频日韩精品成人 | 瑟瑟视频在线观看 | 中文字幕乱妇无码av在线 | 亚洲区小说区图片区qvod | 丁香八月婷婷 | 亚洲精品久久久久久动漫器材一区 | 91av国产在线| 99热久| 久久久久久网址 | 亚洲精品一区二区三区四区乱码 | 欧美激情精品久久久久久变态 | 亚洲一二三四五 | 91亚洲视频在线 | 免费国产精品视频 | 海角社区id | 日韩在线综合 | 欧美三个黑人玩3p | 毛片麻豆 | 国产中文字幕精品 | 又大又硬又爽免费视频 | xxxx国产精品 | 无码少妇精品一区二区免费动态 | 欧美69av | www.欧美 | 电影《两个尼姑》免费播放 | 人操人爽 | 开心激情av | 日本女优黄色 | 亚洲激情视频网 | 在线免费观看视频 | 91一区二区三区在线观看 | 国产精品久久久久毛片软件 | 国产又粗又爽视频 | 高清日韩 | 天堂亚洲精品 | 欧美国产中文 | 宝贝乖h调教灌尿穿环 | 精品三级在线观看 | 国产美女精品人人做人人爽 | 自拍偷拍欧美 | 青青青青在线 | 日本精品免费一区二区三区 | 日本大胆裸体做爰视频 | 久久亚洲天堂 | 国产免费无遮挡 | xxx性视频 | 思思久久精品 | 日韩精品免费在线 | 亚洲精品网站在线播放gif | 免费看黄色片视频 | 国产人妖在线观看 | 爱情岛论坛永久入口 | 成人午夜在线视频 | 国产第一色 | 逼逼爱插插网站 | 亚洲天堂免费在线观看视频 | 国产第一福利 | 日韩av成人在线观看 | jlzzjlzz亚洲日本少妇 | 亚欧美色图 | 国产日批视频 | 亚洲第一综合网 | 婷婷精品一区二区三区 | 色就是色综合 | 伦乱天堂 | 亚洲精品123区 | 黄色免费在线观看网站 | 好吊视频一区二区三区 | 日韩在线一二三 | 深夜福利1000 | 中文字幕av久久爽一区 |