/ Framework Root
|-- core 框架的核心类
|-- config 配置文件
|-- libs 第三方库
|-- model 模型类, 理论上用于写获取数据的具体逻辑, 只放置在根目录下, 任何控制器都可以调用到
|-- modules 项目模块
|-- view 视图文件
|-- tool 框架自带的登录注册模块的SQL,数据库配置文件样例,windows启动php-cgi的脚本
|-- update 框架自更新脚本
|-- static 静态文件存放
|-- cli.php 命令行下的入口文件 php cli.php -q router_name
`-- index.php web入口文件
server {
listen 80;
server_name www.test.com;
location ~ \.ico|jpg|gif|png|js|css$ {
root E:/php/code/project/static;
#expires 1h;
}
location / {
root E:/php/code/project;
fastcgi_pass 127.0.0.1:9720;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root/index.php;
include fastcgi_params;
}
}
127.0.0.1 www.test.com
MYSQL_HOST_FILE
值为dbConfig.json的文件路径参考 core/Route.php (配置文件: config/RouteConfig.php)
配置: 所有对外可访问的接口都要在 config/RouteConfig.php中配置映射规则, 接口与真正的方法是映射关系, 不直接暴露源代码的方法名
例子: 获取文章列表的第二页接口的映射规则为
//路由配置:
'article_list_(\d+)' => 'index/index/route/page/$1'
//浏览器中输入URL:
http://www.test.com/article_list_2
默认路由: 如果浏览器中只输入域名,没有URI,框架会找到 modules/index/index.php::index() 方法并执行 (也可以在RouteConfig.php中配置默认路由)
命令行路由:
php cli.php -q article_list_2
参考 core/Request.php (数据校验的配置在config/VerifyConfig.php)
Request::Get('a', 'default');
Request::Post('a');
Request::Cookie('a');
Request::Route('a');
Request::pickData(['a' => 0, 'b' => '', 'c' => '0'], 'get')
Request::isPost();
参考 core/Response.php
$a = ['list' => [1,2,3,4]];
Response::json(10000, '用户列表', $a);
结果: {"code":10000,"msg":"\u7528\u6237\u5217\u8868","data":{"list":[1,2,3,4]}}
Response::json()的简写, 返回结构是一样的
//成功返回:
Response::success($a);
Response::success($a, '用户列表');
Response::success($a, '用户列表', 20000);
//失败返回:
Response::error('参数错误');
结果: {"code":"-1","msg":"\u53c2\u6570\u9519\u8bef","data":[]]}
Response::error('参数错误', $a);
结果: {"code":"-1","msg":"\u53c2\u6570\u9519\u8bef","data":{"list":[1,2,3,4]},"url":""}
Response::error('参数错误', $a, 20001);
结果: {"code":2001,"msg":"\u53c2\u6570\u9519\u8bef","data":{"list":[1,2,3,4]}}
Response::jsonReturn($a); //{"list":[1,2,3,4]}
Response::notify('页面找不到啦~'); //页面找不到啦~
Response::redirect('充值成功, 页面即将跳转', 'http://www.hearu.top', 3);
Response::jump('http://www.hearu.top'); //直接跳转
参考: core/View.php
View::display();
View::render();
更多增删改查操作请查看 modules/index/index.php::sql()
$rs = Test::link('note')
->fields('id,content')
->where(['uid' => 1, 'age' => 20])
->whereOp('id', '>', 1)
->whereIn('status', [0,1,2])
->order('id desc')
->limit(10)
->select()
->getAll();
var_dump($rs, Test::$currentSql);
参考 libs/FileLog.php
日志文件存放的目录在入口文件 index.php 和 cli.php 中配置: LOGPATH 和 LOG_LEVEL
FileLog::info([xxx], 'tag'); //日志文件: LOGPATH/yyyy-mm-dd.log, 数组内容会被转为json
或
FileLog::error('xxxx');
FileLog::$uuid = time().Fun::randChar(5);
路径: static/sys/js (使用方法在每个js文件的底部, 也可参考 https://exchange.hearu.top/ 一个个人商城项目)
脚本名 | 说明 |
---|---|
zbActionSheet.js | 弹窗表单, 支持 单行文本/多行文本/单选/多选/添加图片 |
zbEditTable.js | 可编辑表格, 支持 创建可编辑的表格, 只读表格; 支持动态增加/删除行; 支持批量更改属性; 支持批量获取输入的值 |
zbImage.js | 图片拼接: 支持创建二维码, 二维码加文字, 图片加二维码水印(依赖 在static/lib/jquery-qrcode.min.js); 支持创建浮层图片(点击后隐藏) |
zbUploadImage.js | 上传图片: 支持跟随上传其他参数, 支持图片压缩(依赖 static/lib/lrz.min.js) |
zbList.js | 列表: 支持onclick事件; 支持仅展示无响应事件的静态列表 |
zbPanel.js | 可折叠的列表: 支持点击后回调 |
zbRequest.js | 发起http请求: 支持缓存(依赖 static/lib/md5.min.js); 支持自定义成功后回调 |
zbRouter.js | 单页面路由: 支持匹配URL调用指定的回调方法, 并无刷新更新浏览器地址栏URL |
zbTabNav.js | 导航栏: 支持点击后tab高亮, 调用回调, 页面无刷新切换, 可放在页面任意位置 |
zbToolBar.js | 工具栏: 支持显示在底部或顶部显示 |
zbTool.js | 工具方法合集: 获取年月日; 获取随机数; 字符串拼接补全; 获取URL参数; 跳转页面,刷新页面; 字符串和json互转; html转dom; 数组转HTML; 回到顶部; 等 |
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
Activity
Community
Health
Trend
Influence
:Code submit frequency
:React/respond to issue & PR etc.
:Well-balanced team members and collaboration
:Recent popularity of project
:Star counts, download counts etc.