日韩性视频-久久久蜜桃-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.简介的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    主站蜘蛛池模板: 总裁憋尿呻吟双腿大开憋尿 | 天堂аⅴ在线最新版在线 | 超碰久草 | 欧美一级片在线免费观看 | 亚洲精品成a人在线观看 | 国产精品偷拍 | 最新日韩在线视频 | 午夜神器在线观看 | 欧美黑人性猛交xxxx | 精品国偷自产国产一区 | 久久精品免费看 | 色诱av手机版 | 亚洲成人精品久久 | 国产黄视频在线观看 | 日本不卡免费 | 欧美视频在线观看视频 | 性高跟丝袜xxxxhd | 国产国拍精品亚洲 | 日韩三级国产精品 | 日韩国产第一页 | 日韩成人免费电影 | 中国国产黄色片 | 欧美一区2区三区4区公司 | 成人在线免费视频播放 | 又粗又猛又爽又黄少妇视频网站 | 日韩美一级片 | 日韩综合一区二区三区 | 91人人澡人人爽人人精品 | 黄色小视频入口 | 激情六月天婷婷 | 国产重口老太伦 | 涩里番在线观看 | 午夜激情在线观看视频 | 国产四区| 日本特黄一级大片 | 中国女人一级一次看片 | 波多野结衣二区 | 俄罗斯精品一区二区三区 | 激情五月亚洲 | 林由奈在线观看 | 一区二区福利电影 | 日本美女视频 | 国内自拍视频在线播放 | 女性裸体无遮挡胸 | 怡红院综合网 | 思思精品视频 | 不卡一二区 | 欧美二区在线观看 | 午夜小影院 | 久久久新| 午夜精品视频在线观看 | 免费av在线网站 | 色综合五月 | 一级做a爱 | 亚洲精品xxx | 亚洲免费久久 | 亚洲日本va中文字幕 | 国产黑丝在线 | 操小妹影院 | 国产日批视频 | 欧美亚洲天堂 | 国语播放老妇呻吟对白 | 91视 | 丰满饥渴老女人hd | 最新av中文字幕 | 欧美精品aa | 日韩成人av片 | 中文字幕一区二区三区四区免费看 | 久久久久久久久国产精品 | 麻豆一区二区 | 99在线观看免费 | 中文亚洲字幕 | 日韩短视频 | 在线观看你懂的网站 | 国产日韩久久久 | 色男天堂| 国产一卡二卡三卡四卡 | 精品女同一区二区 | 国产极品91 | 影音先锋男人天堂 | 无码人妻精品一区二区蜜桃网站 | 国产三级自拍视频 | 女人16一毛片 | 亚洲色图视频网站 | 91麻豆精品视频 | 九九视频免费观看 | 中文字幕 国产精品 | 欧美日韩一区二区区别是什么 | 亚洲专区在线 | 亚洲一区国产精品 | 欧美大肥婆大肥bbbbb | 少妇粉嫩小泬喷水视频www | 丰满雪白极品少妇流白浆 | 一本大道熟女人妻中文字幕在线 | 国产精品精品软件视频 | 日韩不卡高清 | 免费黄色在线网站 | 国产精品亚洲五月天丁香 | 天天操天天爽天天射 |