- 简介
框架是组织web程序代码的一种方式,通过面向对象编程思想和设计模式的应用,可以更好地实现系统解耦和代码复用。本文主要介绍一个简易框架必要的组成和功能。本文的目的并不是介绍如何开发框架,而是引导读者由浅入深地理解框架内核,更好地应用框架提高工作效率。需要特别注意的是框架不仅限于MVC框架,还包括一些组件和库(比如Swoole、Yar、Thrift、amphp等),MVC框架也是由很多组件或库(自己开发或者第三方开源)组装而成的。 - 框架的组成
- 入口文件(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等)
- 入口文件(index.php)
- 必要的功能
- 自动加载
- 自己实现(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)
- 自动加载
- 框架的发布
- 发布到Github(其他代码平台也可,支持Git/Svn/Hg)
- packagist提交你的package
- 有代码更新时到对应package点击update更新即可
- 主流框架
- Laravel(优雅的PHP框架)
- Yii2(支持模板生成,容易入门)
- Zend Framework
- Symfony
- Phalcon(C扩展)
- Yaf(C扩展,鸟哥出品)
- ThinkPHP(易上手,设计略粗糙)
- 我自己的框架(仅供参考)
蓝豹PHP框架
转载于:https://my.oschina.net/luoxiaojun1992/blog/732420