如何开发一个简易PHP框架
2016-08-14 00:00
176 查看
摘要: 框架是组织web程序代码的一种方式,通过面向对象编程思想和设计模式的应用,可以更好地实现系统解耦和代码复用。本文主要介绍一个简易框架必要的组成和功能。本文的目的并不是介绍如何开发框架,而是引导读者由浅入深地理解框架内核,更好地应用框架提高工作效率。
简介
框架是组织web程序代码的一种方式,通过面向对象编程思想和设计模式的应用,可以更好地实现系统解耦和代码复用。本文主要介绍一个简易框架必要的组成和功能。本文的目的并不是介绍如何开发框架,而是引导读者由浅入深地理解框架内核,更好地应用框架提高工作效率。需要特别注意的是框架不仅限于MVC框架,还包括一些组件和库(比如Swoole、Yar、Thrift、amphp等),MVC框架也是由很多组件或库(自己开发或者第三方开源)组装而成的。
框架的组成
入口文件(index.php)
入口文件是一个框架最必不可少的文件,是程序接收Web请求的唯一入口。
核心类文件(App.php)
核心类是一个框架的大脑,类似于计算机中的CPU,负责调度处理各种内部逻辑。
其他的组件(Request、UrlManager、Route等)
必要的功能
自动加载
自己实现(spl_autoload_register()注册函数或方法)
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
![](https://static.oschina.net/uploads/img/201608/14152223_9KLw.png)
有代码更新时到对应package点击update更新即可
主流框架
Laravel(优雅的PHP框架)
Yii2(支持模板生成,容易入门)
Zend Framework
Symfony
Phalcon(C扩展)
Yaf(C扩展,鸟哥出品)
ThinkPHP(易上手,设计略粗糙)
我自己的框架(仅供参考)
蓝豹PHP框架
简介
框架是组织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等)
必要的功能
自动加载
自己实现(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
![](https://static.oschina.net/uploads/img/201608/14152223_9KLw.png)
有代码更新时到对应package点击update更新即可
主流框架
Laravel(优雅的PHP框架)
Yii2(支持模板生成,容易入门)
Zend Framework
Symfony
Phalcon(C扩展)
Yaf(C扩展,鸟哥出品)
ThinkPHP(易上手,设计略粗糙)
我自己的框架(仅供参考)
蓝豹PHP框架
相关文章推荐
- Sys请教下如何用C#开发一个简易的电路模拟程序<qi>
- 以太坊开发:如何在Windows下开发一个简易Dapp
- 如何用django开发一个简易个人Blog
- 如何用django开发一个简易个人Blog
- 讲述如何开发一个控件,很有价值(五)
- 如何开发出一个高质量的J2EE(转载)
- 用VC++开发一个简易的播放器(一)
- 初学者如何开发出一个高质量的J2EE系统
- 初学者如何开发出一个高质量的J2EE系统
- 初学者如何开发出一个高质量的J2EE系统
- 初学者如何开发出一个高质量的J2EE系统
- 初学者如何开发出一个高质量的J2EE系统
- 初学者如何开发出一个高质量的J2EE系统
- [软件工程] 如何搭建和管理好一个完善的开发平台
- 讲述如何开发一个控件,很有价值(三)
- 讲述如何开发一个控件,很有价值(七)
- 初学者如何开发出一个高质量的J2EE系统
- 如何建立一个 XML 的开发环境
- 如何开发一个虚拟域名系统
- 讲述如何开发一个控件,很有价值(四)