如何开发一个简易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框架
相关文章
相关标签/搜索