如何開發一個簡易PHP框架

  1. 簡介
    框架是組織web程序代碼的一種方式,經過面向對象編程思想和設計模式的應用,能夠更好地實現系統解耦和代碼複用。本文主要介紹一個簡易框架必要的組成和功能。本文的目的並非介紹如何開發框架,而是引導讀者由淺入深地理解框架內核,更好地應用框架提升工做效率。須要特別注意的是框架不只限於MVC框架,還包括一些組件和庫(好比Swoole、Yar、Thrift、amphp等),MVC框架也是由不少組件或庫(本身開發或者第三方開源)組裝而成的。
  2. 框架的組成
    • 入口文件(index.php)
      入口文件是一個框架最必不可少的文件,是程序接收Web請求的惟一入口。
      // Require Composer Autoload File
      require_once(__DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'vendor' . DIRECTORY_SEPARATOR . 'autoload.php');
      
      // Start App
      (new \lb\Lb())->run();
    • 核心類文件(App.php)
      核心類是一個框架的大腦,相似於計算機中的CPU,負責調度處理各類內部邏輯。
      class Lb extends \lb\BaseLb
      {
          public function run()
          {
              if (strtolower(php_sapi_name()) !== 'cli') {
                  parent::run();
              }
          }
      }
    • 其餘的組件(Request、UrlManager、Route等)
  3. 必要的功能
    • 自動加載
      • 本身實現(spl_autoload_register()註冊函數或方法)
      spl_autoload_register(['self', 'autoload']);
      • Composer(PSR-0、PSR-4)
      • 結合上面兩種方式(好比Yii2)
    • 路由(解析$_SERVER['REQUEST_URI']或者$_SERVER['QUERY_STRING'],提取controller、action、request parameters,支持.html僞靜態等。)
      • 約定的規則
      • 自由配置(Laravel、Symfony)
      • 結合以上兩種方式(Yii2)
    • 控制器(根據解析出來的路由信息調用相應的Controller、Action)
  4. 框架的發佈
    1. 發佈到Github(其餘代碼平臺也可,支持Git/Svn/Hg)
    2. packagist提交你的package 輸入圖片說明
    3. 有代碼更新時到對應package點擊update更新便可
  5. 主流框架
    • Laravel(優雅的PHP框架)
    • Yii2(支持模板生成,容易入門)
    • Zend Framework
    • Symfony
    • Phalcon(C擴展)
    • Yaf(C擴展,鳥哥出品)
    • ThinkPHP(易上手,設計略粗糙)
  6. 我本身的框架(僅供參考)
    藍豹PHP框架
相關文章
相關標籤/搜索