摘要:
前言最近在探讨技术的同时 发现老袁的系统逻辑很简单为此我灵感就来了 借鉴了老袁的逻辑 为自己...
描述:
前言
最近在探讨技术的同时 发现老袁的系统逻辑很简单
为此我灵感就来了 借鉴了老袁的逻辑 为自己开发了一套简洁性的框架
好处就是代码可以兼容yzm 但使用方法稍微不同 加载逻辑不一样 话不多说细讲一番
当然基于yzm上的逻辑 版权一定带上 我代码示例中都有注明yzm的版权
功能
目录结构
目录结构 很简单
app为应用模块
cache 缓存
common公共目录
extend扩展类
qhphp框架类
uploads上传目录
app应用
基础三件套 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
新增cookie类 使用方法也是直接引入即可use qhphp\cookie\cookie;
功能有设置 获取 删除 加密 等
Session
新增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 }
app类
使用composer来自动加载整个框架 与yzm的区别是 yzm以打开传统方式打开php类来运行
我这完全使用了第三方来加载 利于命名空间的映射来加载类以及框架
优势在于引入类的时候灵活 避免了文件的重复 不需要手动编写复杂的自动加载逻辑
能够减少文件 I/O 和遍历目录的操作
以与许多其他工具和框架集成 一键安装 Composer 引入到现有的项目中,而不需要对项目的结构和代码进行大量修改。
可以简化项目的依赖管理和自动加载过程,提高性能
扩展标签
可以书写自己的标签 方便灵活
也可以自定义书写标签规则
自定义拓展灵活
函数包括助手函数和yzm的系统函数
请登录后发表评论