关于TinyMVC
半年前写的一个微型框架,参考了部分micromvc的思想。简约为原则的高性能框架,包含:路由,简单权限验证,cookie,session,ORM,view,validation,cache等等。
我现在的博客就是用此框架搭建的。
ORM介绍
- 仿tp的orm,更简单,效率更优。注意使用时一定要绑定变量!
- 支持主从读写分离,支持主从随机读取;
- 对于直接执行原生sql语句,主库用execute,从库用query,原生sql也支持变量绑定
- 支持prefix
- 支持变量绑定的函数有:where,group,having,order,第一个参数为string,第二个参数为绑定变量数组
- 不支持变量绑定的函数有:field,table,join,limit,只支持一个string参数(limit除外)。limit会对传入的值强行intval,防止后端分页没有处理用户输入的安全隐患
- 对于链式操作,会在table和join中自动加入prefix,指定表的情况:TABLE_NAME会转成:pre_table_name
- 对于query和execute不支持自动加入prefix,由于本身就是原生sql语句,直接写表名即可
Theme Builder介绍
- 设计思想:不重复写模板和逻辑,通过简单配置实现某些通用功能。
- 设计思路:在控制器(controller)中指定附加action,theme builder读取辅助类(helper)中的配置进行处理。
- Tabs: bootstrap风格的tab,ajax显示content。
- Datatables:bootstrap风格的数据列表。可用作普通分页、排序、过滤列表或单纯table列表
路由举例配置
return array(
// 路由配置
'routes' => array(
'admin' => 'admin', // 方式1,子模块模式
'page/{id}' => function($id){ // 方式2,直接处理数据
echo md5($id);
},
'{num}' => function ($num, &$controller, &$method, &$pathInfo) { // 方式3:指定c,m,p
$controller = 'Index';
$method = 'index';
$pathInfo = array($num);
},
'param/{param?}' => function ($param, &$controller, &$method, &$pathInfo) { // 例:最后一个参数可不传递, 用'?'
$controller = 'Index';
$method = 'test';
$pathInfo = array($param);
},
),
// 路由匹配后的正则配置
'pattern' => array(
'num' => '[0-9]+',
'param' => '[0-9]*',
),
);
更多介绍
移步:
- TinyMVC Github: https://github.com/hisune/tinymvc
- TinyMVC Demo App: https://github.com/hisune/tinymvc-demo
如果您觉得您在我这里学到了新姿势,博主支持转载,姿势本身就是用来相互学习的。同时,本站文章如未注明均为 hisune 原创 请尊重劳动成果 转载请注明 转自: 自用框架tiny mvc framework开源了 - hisune.com
1 Comments
fjli.towne#20 Reply
Awesome! 马克先~就是最近写个认识管理系统先入了ThinkPHP的坑,现在爬不出来了。先写完再说啦