YzmCMS x 基于新开框架纯文章系统

前言 最近在探讨技术的同时 发现老袁的系统逻辑很简单 为此我灵感就来了 借鉴了老袁的逻辑 为自己开发了一套简洁性的框架 好处就是代码可以兼容yzm 但使用方法...

前言

image.png

最近在探讨技术的同时 发现老袁的系统逻辑很简单

为此我灵感就来了 借鉴了老袁的逻辑 为自己开发了一套简洁性的框架

好处就是代码可以兼容yzm 但使用方法稍微不同 加载逻辑不一样 话不多说细讲一番

当然基于yzm上的逻辑 版权一定带上 我代码示例中都有注明yzm的版权

演示

演示

功能

目录结构

image.png

目录结构 很简单 

app为应用模块 

cache 缓存  

common公共目录 

extend扩展类

qhphp框架类

uploads上传目录

app应用

image.png

基础三件套 MVc框架 必备套件

配置

image.png

配置分别存为其他文件 简单明了 新增助手函数

加载

yzm加载方式:yzm_base::load_controller('common', 'admin', 0); 

我的加载方式 需要引入加载类 

use qhphp\base\Base;

然后再Base::load_controller('login','admin');

控制器必须要有命名空间 如:namespace app\admin\controllers;

 

应用映射

因为与yzm加载方法不同 我这版可以设置应用映射

什么叫应用映射 就是直接给后台改名 后台路径可以改 

 

image.png

把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); // 覆盖现有文件

功能有 可以获取打开图片的信息,包括图像大小、类型等 使用cropsave方法完成裁剪图片功能。

支持从某个坐标开始裁剪 

生成缩略图

添加水印

系统支持添加图片及文字水印

请求类

使用: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 引入到现有的项目中,而不需要对项目的结构和代码进行大量修改。

可以简化项目的依赖管理和自动加载过程,提高性能

扩展标签

可以书写自己的标签 方便灵活 

 

image.png

也可以自定义书写标签规则

 

image.png

自定义拓展灵活

函数包括助手函数和yzm的系统函数

 

image.png

总结

需要可以找我免费获取 避免盗码行为 框架基于yzm二开并处理逻辑