超简略开发本人的php框架一点都不难!
动身点:我个人懂得 本人开发框架也是熬炼原生的一种手段。写完之后看别的框架也利便多了。假如你碰到一个没有文档或文档极少的框架,可以跟着这个思绪探索着补充。或干脆拿着原生上来就是干,我刚接触yii2的时候就是这样,都没来的及看文档就开工了,根本纯原生写的,就用了个yii2的csrf和双说话....
写框架的极简思绪:
接收,打印参数想如何弄。如 猎取配置文件的办法,按照传过来的参数 构思
1、一样都是先推断文件可否存在。存在就该include就include,该new就new。然后做存到属性中(做缓存)
2、主如果调取流程:都什么需要放到run办法中
具体思绪:
1、写入口文件(2-5步都是写在入口文件中的)
2、定义常量(就是框架的各层级名目,省着每次写一大串)
//定义框架根名目 //定义中心文件名目途径 //利用名目(包括操纵器、模型等) //可否开启调试 //假如DEBUG为true,将错误显示翻开。不然不显示
3、引入函数库
//加载公共办法 //加载中心文件
4、主动加载
推断要加载的类可否存在。提醒:已经存到属性中了,其实拿这个属性推断。
存在返回true;
不存在就加载。提醒:反歪线更换
要加载的是文件,就include。留意:这个文件从根名目下寻
不是就返回false
留意:写完再创立lib名目,引入路由类。测试
5、启动框架
//调取中心文件中的run办法(我的中心文件是core/init.php)
6、路由解析三部曲
6.1、潜藏入口文件
6.2、猎取url的参数
存在,就解析
正常状况,先转数组(利便处置),效验非正常状况(如:只在url上输入了操纵器,没有输入办法,给办法个默许值)
处里url上的余外参数
正常状况
非正常状况,他输入的是奇数
不存在给默许值
6.3、返回对应的操纵器和办法(其实在6.2中存到属性中,也算是返回了)
7、加载操纵器
在run()时就要加载操纵器
将路由解析出来的操纵器名,拼成操纵器文件的途径。
推断操纵器文件可否存在,存在就new。不存在就抛出错误
留意:这里引入了模块的概念\app是模块不是利用,比成熟的框架少一层
8、返回结果
跑起来试一试,其实到这步一个建档的框架已经完成了,接下来的是扩展框架
9、在操纵器中连接模型类
在lib中创立个model类,用于连接数据库
在操纵器中new model类,写sql操纵数据库
10、中写视图类
assign和display办法写在初始化(core/init.php)类中。留意:先赋值,后包括模板文件
然后控制器继承该类,停止调取。
11、写配置类
创建配置文件类
写单个配置文件的办法(提醒:既然他俩猎取,传参是少不了的。2个参数,配置项,配置文件名。打印参数,然后构思)
//1、推断配置文件可否存在,存在就include //2、推断配置项可否存在,存在直接给缓存到属性中 //3、推断属性中有无缓存,有就直接返回属性中存的
写猎取所有配置文件的办法
提醒: 创建个配置文件名目,用来放各种配置文件(如 数据库的,路由的,日志的....)
测试:配置文件好使不
12、写日志类
/** * 提醒:用的是工厂模式的思想: * 1、读取配置文件,猎取当前驱动。在初始化办法中new类 * 2、在log办法中,调取不一样驱动中的log办法 */
创立日志类
创立驱动名目
创立日志的配置文件
13、使用composer:编写json文件,本人的框架上到github上供人家使用
第1个类库报错的地址:https://github.com/filp/whoops
第2个类库酷炫的打印变量:"s
"symfony/var-dumper":"*"//更帅气变量输出的结果 ymfony/var-umper":"*"//更帅气变量输出的结果
第3个类库数据库的地址:http://medoo.lvtao.net/1.2/doc.php
第4个类库模板引擎的地址:https://twig.symfony.com/doc/2.x/intro.html#installation
镜像网址:https://pkg.phpcomposer.com/
留意:下图很重要
14、使用medoo数据库类
假如本人封装pdo大概会有什么想象不到的破绽,这样我们就不如直接用现成的类库加载
http://medoo.lvtao.net/
思绪:先将本来继承的pdo换成该类库,在封装模型操纵器调取
15、模板引擎类库
思绪:修改display办法,改成类库的,还有模板规划
剩下其余的扩展就一视同仁了,想不到的话,大概去参照 成熟的框架
这里写2个封装好的办法
封装post接收办法(给大家做参照 思绪)
封装跳转办法
更多教程:《php教程》
以上就是超简便开发本人的php框架一点都不难!的具体内容,更多请关注百分百源码网其它相关文章!