简单、易用且功能完整的 PHP 框架。
PHP 8.0 +
下载最新的发行包,解压后即可。
提示:在 Nginx 中,你需要将以下规则添加到重新规则文件内:
if ($request_uri !~ ^/(stc/.*|favicon.\w+?\??.*|apple[\w-]+?\.png\??.*|[\w-]+?\.txt\??.*)$) {
rewrite ^/([\s\S]*)$ /index.php?__path=$1 last;
}
Captcha, Consistent, Crypto, Db (MySQL), Fs, Kv (Redis), Net, Scan, Session, Jwt, Sql, Text.
秉承开袋即食的原则,封装统一风格的常用类库。
直接使用各种库,系统会自动加载它。
可以这样用:
$res = Net::open('https://xxx/test')->post()->data(['a' => '1', 'b' => '2'])->request();
也可以这样用:
$res = Net::get('https://xxx/test');
可以设置自定义的解析结果:
$res = Net::get('https://xxx/test', [
'hosts' => [
'xxx' => '111.111.111.111'
]
]);
也可以选择本地的其他网卡来访问:
$res = Net::get('https://xxx/test', [
'local' => '123.123.123.123'
]);
更可以在访问多条 url 时进行链接复用,大大加快访问速度:
$res1 = Net::get('https://xxx/test1', [
'reuse' => true
]);
$res2 = Net::get('https://xxx/test2', [
'reuse' => true
]);
Net::closeAll();
更拥有完整的 Cookie 管理器,可以轻松将 Cookie 获取并存在任何地方,发送请求时,系统也会根据 Cookie 设置的域名、路径等来选择发送,并且 Set-Cookie 如果有非法跨域设置,也会被舍弃不会被记录,就像真正的浏览器一样:
$res1 = Net::get('https://xxx1.xxx/test1', [], $cookie);
$res2 = Net::get('https://xxx2.xxx/test2', [], $cookie);
提示:Net 库同时支持传入 options 和 open 链式操作,如 Net::open('xxx')->follow()->timeout(60)->reuse()->save(ROOT_PATH . 'doc/test.txt')->request();
拥有大量好用的接口,可以轻松的从数据库筛选出需要的数据:
$ls = Order::where([
'state' => '1'
])->by('id', 'DESC')->page(10, 1);
$list = $ls->all();
$count = $ls->count();
$total = $ls->total();
获取一个用户:
$user = User::select(['id', 'user'])->filter([
['time_add', '>=', '1583405134']
])->first();
使用 _checkXInput 方法,可以进行 XSRF 检测,防止恶意访问。
借助 Scan 库可以轻松实现扫码登录的功能。
使用 Net 库的 rproxy 方法,配合路由参数,可轻松实现反向代理功能。
$str = Core::random(16, Core::RANDOM_N);
Captcha::get(400, 100)->getBuffer();
$userList = User::where([
['state', '!=', '0'],
'type' => ['1', '2', '3'],
'is_lock' => '0'
])->all();
提示:所有数据库操作都已经做了安全防注入处理。
$sql->select(['SUM(user.age) age'], 'order')->leftJoin('user', ['order.user_id' => Sql::column('user.id')]);
将输出:
SELECT SUM(`test_user`.`age`) AS `age` FROM `test_order` LEFT JOIN `test_user` ON `test_order`.`user_id` = `test_user`.`id`
写起来好轻松!
$this->_loadLocale($_GET['lang'], 'test');
echo l('copy');
根据 lang 值不同,将输出:Copy、复制、複製、コピー等,在目录 /data/locale/ 中配置。
根据字符串、数字、比对大小甚至是正则,对提交的数据进行直接校验,方便!
[
'he' => ['require', [0, 'The he param does not exist.']],
'num' => ['> 10', [0, 'The num param must > 10.']],
'reg' => ['/^[A-CX-Z5-7]+$/', [0, 'The reg param is incorrect.']],
'arr' => [['a', 'x', 'hehe'], [0, 'The arr param is incorrect.']]
]
参见:/test/ctr-checkinput
你可以访问 /test/ 来查看更多示例。
基于 Apache-2.0 许可。