最近在探讨技术的同时 发现老袁的系统逻辑很简单
为此我灵感就来了 借鉴了老袁的逻辑 为自己开发了一套简洁性的框架
好处就是代码可以兼容yzm 但使用方法稍微不同 加载逻辑不一样 话不多说细讲一番
当然基于yzm上的逻辑 版权一定带上 我代码示例中都有注明yzm的版权
目录结构 很简单
app为应用模块
cache 缓存
common公共目录
extend扩展类
qhphp框架类
uploads上传目录
基础三件套 MVc框架 必备套件
配置分别存为其他文件 简单明了 新增助手函数
yzm加载方式:yzm_base::load_controller('common', 'admin', 0);
我的加载方式 需要引入加载类
use qhphp\base\Base;
然后再Base::load_controller('login','admin');
控制器必须要有命名空间 如:namespace app\admin\controllers;
因为与yzm加载方法不同 我这版可以设置应用映射
什么叫应用映射 就是直接给后台改名 后台路径可以改
把admin改为admin1 即可访问 原来的方式将为静止访问
默认使用了yzm方法类 新增了我自己的缓存类
具体功能有 设置缓存 自增缓存值 自减缓存值 追加数据 删除缓存 获取缓存 获取并删除缓存 清空缓存
使用方法 直接 use qhphp\cache\Cache; 引入
新增配置类 使用方法直接use qhphp\config\Config;
可以直接读取配置信息 如读取config::get('auth_key');
默认读取app下的配置 读取其他可以config::get('auth_key','rotue); 读取路由配置
新增cookie类 使用方法也是直接引入即可use qhphp\cookie\cookie;
功能有设置 获取 删除 加密 等
新增Session类 使用方法直接引入 use qhphp\Session\Session;
基本增删
yzm直接使用方法直接使用D方法
我这使用db方法 当然如果你不用函数 你可以直接引入 use qhphp\db\db;
创建类 直接使用
增:
Db('user')->insert($data);
删:
Db('user')->where('id',1)->delete();
改:
如果数据中包含主键,可以直接使用:
Db('user')->update(['name' => 'thinkphp','id'=>1]);
查:
Db('user')->where('id',1)->find();
查询数据集使用:
Db('user')->where('status',1)->select();
// 返回某个字段的值 Db('user')->where('id',1)->value('name');
// 查询第一页数据 Db('article')->page('1,10')->select();
使用page方法你不需要计算每个分页数据的起始位置,page方法内部会自动计算。
alias用于设置当前数据表的别名,便于使用其他的连贯操作例如join方法等。
示例:
Db:('user')->alias('a')->join('__DEPT__ b ','b.user_id= a.id')->select();
// 助手函数 db('user')->count();
获取用户的最大积分:
db('user')->max('score');
获取用户的平均积分:
db('user')->avg('score');
// 获取今天的博客 Db('blog') ->whereTime('create_time', 'today')->select(); // 获取昨天的博客 Db('blog')->whereTime('create_time', 'yesterday')->select(); // 获取本周的博客 Db('blog')->whereTime('create_time', 'week')->select(); // 获取上周的博客 Db('blog')->whereTime('create_time', 'last week')->select(); // 获取本月的博客 Db('blog')->whereTime('create_time', 'month')->select(); // 获取上月的博客 Db('blog')->whereTime('create_time', 'last month')->select(); // 获取今年的博客 Db('blog')->whereTime('create_time', 'year')->select(); // 获取去年的博客 Db('blog')->whereTime('create_time', 'last year')->select();
// 自增 score 字段 db('user')->where('id', 1)->setInc('score'); // 自减 score 字段 db('user')->where('id', 1)->setDec('score');
// 查询状态为1的用户数据 并且每页显示10条数据 $list = Db('user')->where('status',1)->paginate(10); $page = db('user')->render($list)
使用render方法 可直接分页 使用$page可直接输出上一页下一页
这是我自己写的类 文件小 方便调用接口 如何你需要单独使用分页 你可以直接use方式引入即可
新增报错类 如果遇到错误 会自动写入错误日志 老袁写的写的也不错 我暂时使用他的了
如果需要使用直接use qhphp\log\ErrorLog;
使用:use qhphp\upload\Uploads;
功能:上传文件大小格式限制 生成文件哈希散列值等等 大小十几k
使用
// $image = new Image('path/to/image.jpg'); // $image->crop(100, 100, 200, 200); // $image->flip('horizontal'); // $image->watermark('path/to/watermark.png', 50, 50); // $image->text('Hello World', 100, 100, [255, 255, 255], 12, 'path/to/font.ttf'); // $image->save('path/to/new/image.jpg', true); // 覆盖现有文件
功能有 可以获取打开图片的信息,包括图像大小、类型等 使用crop
和save
方法完成裁剪图片功能。
支持从某个坐标开始裁剪
系统支持添加图片及文字水印
使用:use qhphp\request\Request;
判断请求方法是否为 GET 判断请求方法是否为 POST 判断请求是否为 AJAX 请求 获取客户端 IP 地址
获取 GET 参数 获取 POST 参数 获取 GET 或 POST 参数 获取指定的 GET 或 POST 参数
使用:use qhphp\validator\Validator;
具体方式看:https://www.yzmask.com/show/1982.html
使用运算符例如:
{$user.score+10} //正确的{$user['score']+10} //正确的{$user['score']*$user['level']} //正确的{$user['score']|myFun*10} //错误的{$user['score']+myFun($user['level'])} //正确的
模板可以支持三元运算符,例如:
{$status? '正常' : '错误'} {$info['status']? $info['msg'] : $info['error']} {$info.status? $info.msg : $info.error }
使用composer来自动加载整个框架 与yzm的区别是 yzm以打开传统方式打开php类来运行
我这完全使用了第三方来加载 利于命名空间的映射来加载类以及框架
优势在于引入类的时候灵活 避免了文件的重复 不需要手动编写复杂的自动加载逻辑
能够减少文件 I/O 和遍历目录的操作
以与许多其他工具和框架集成 一键安装 Composer 引入到现有的项目中,而不需要对项目的结构和代码进行大量修改。
可以简化项目的依赖管理和自动加载过程,提高性能
可以书写自己的标签 方便灵活
也可以自定义书写标签规则
自定义拓展灵活
函数包括助手函数和yzm的系统函数
需要可以找我免费获取 避免盗码行为 框架基于yzm二开并处理逻辑
版权我已经标注 我写的功能类 有我自己的版权 使用yzm的代码也就是系统的控制 框架80%为原创性代码
登录后可查看详情!