1 Star 0 Fork 47

蜗牛先生 / thinkyaf

forked from 龙人 / thinkyaf 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

由于个人的项目需要,而对国产框架thinkphp又情有独钟,利用yaf的高性能,整合了一些网上的轮子和API接口需要的组件,致力于提高生产环境下的运行性能和开发环境下的开发效率。 核心库高效封装常用库和操作,兼容php5.6及以上,在PHP7.1上性能爆发,不知所命何名甚好,暂叫 thinkyaf 。

使用前,请安装yaf扩展;

看云文档地址:https://www.kancloud.cn/yumufeng/thinkyaf

以下常用工具库如下,有好的轻量级的欢迎大家推荐issue

数据库 - Orm

适用于PHP5.6+ 的,最佳平台PHP 7.1:

  • 基于ThinkPHP5.1的ORM独立封装,PDO底层
  • 支持Mysql、Pgsql、Sqlite、SqlServer、Oracle和Mongodb
  • 支持Db类和查询构造器
  • 支持事务
  • 支持模型和关联

Db类用法:

use think\Db;

// 进行CURD操作
Db::table('user')
	->data(['name'=>'thinkphp','email'=>'thinkphp@qq.com'])
	->insert();	
Db::table('user')->find();
Db::table('user')
	->where('id','>',10)
	->order('id','desc')
	->limit(10)
	->select();
Db::table('user')
	->where('id',10)
	->update(['name'=>'test']);	
Db::table('user')
	->where('id',10)
	->delete();

定义模型:

class UserModel extends Model
{
    public function getUserInfo($uid)
    {

        return $this->where('uid',$uid)->find();
    }

}

代码调用:

$user = new UserModel();
$user->getUserInfo($uid);

更多操作参考TP5.1的完全开发手册数据库章节

缓存 - Cache

用于PHP缓存管理(PHP>5.6+)

  • 驱动方式(支持file/memcache/redis/xcache/wincache/sqlite)

使用File作为缓存驱动时,请设置 runtime目录为 777 可读可写权限


// 设置缓存
use \think\Cache;

Cache::set('val','value',600);
// 判断缓存是否设置
Cache::has('val');
// 获取缓存
Cache::get('val');
// 删除缓存
Cache::rm('val');
// 清除缓存
Cache::clear();
// 读取并删除缓存
Cache::pull('val');
// 不存在则写入
Cache::remember('val','value');


// 对于数值类型的缓存数据可以使用
// 缓存增+1
Cache::inc('val');
// 缓存增+5
Cache::inc('val',5);
// 缓存减1
Cache::dec('val');
// 缓存减5
Cache::dec('val',5);

数据验证 - validate

用法


$validate = Validate::make([
    'name'  => 'require|max:25',
    'email' => 'email'
]);

$data = [
    'name'  => 'thinkphp',
    'email' => 'thinkphp@qq.com'
];

if (!$validate->check($data)) {
    var_dump($validate->getError());
}

支持创建验证器进行数据验证

<?php

class UserValidate extends Validate
{
    protected $rule =   [
        'name'  => 'require|max:25',
        'age'   => 'number|between:1,120',
        'email' => 'email',    
    ];
    
    protected $message  =   [
        'name.require' => '名称必须',
        'name.max'     => '名称最多不能超过25个字符',
        'age.number'   => '年龄必须是数字',
        'age.between'  => '年龄只能在1-120之间',
        'email'        => '邮箱格式错误',    
    ];
    
}

验证器调用代码如下:

$data = [
    'name'  => 'thinkphp',
    'email' => 'thinkphp@qq.com',
];

$validate = new UserValidate();

if (!$validate->check($data)) {
    var_dump($validate->getError());
}

更多用法可以参考5.1完全开发手册的验证章节

输入过滤库 - input

  • 返回true(输入存在且有效)或者false,
  • 输入结果存在$export中
  • $filter为参数格式验证或者过滤方法支持:正则表达式,系统函数,php的filter_var常量,自定义的验证过滤函数
Input::post($name, &$export, $filter = null, $default = null)
Input::get($name, &$export, $filter = null, $default = null)
Input::put($name, &$export, $filter = null, $default = null)
Input::I($name, &$export, $filter = null, $default = null)

其中I包含以上三种方式支持cookie和env$name未指定方法时读取$_RESUQET

快速随机数生成器 - Random

Random::n($n = 4)  #生成随机number[0-9]
Random::w($n = 8)  #随机word[0-9|a-Z]
Random::c($n=10)   #生成随机char[a-Z]
Random::code($n=6) #随机验证码验证码,去除0,1等不易辨识字符

非对称加密库 - Rsa

可用户RPC接口的安全性,和数据传输非对称加密,默认配置 res.lifetime 为30天有效私钥缓存

Rsa::pubKey()   #获取公钥
Rsa::encode($s) #加密
Rsa::decode($s) #解密

api支持 - restfull

REST控制器核心基类

  • 自动把GET,POST,PUT,DELETE 映射到 对应的Action 如getdetail 映射到GET_detailAction()
  • 自动绑定参数id
  • 自动输出json格式数据

代码演示:

     /**
     * GET /Index/test?data=''
     * GET请求测试
     *
     * success() 和 fail() 快速返回示例
     */
    public function GET_testAction()
    {
        if (Input::get('data', $uid, 'int', 1)) {//get参数中含data
            //数据库操作
            $userinfo = \think\Db::name('user')->where('uid', $uid)->field('uid,username')->find();
            $this->success($userinfo);
        } else {//未输入data参数
            //fail快速返回出错信息
            $this->fail('please send request data with field name "data"');
        }
    }

    /**
     * POST /Index/test
     * POST请求测试
     *
     * response()函数自定义状态
     */
    public function POST_testAction()
    {
        if (Input::post('data', $data)) {
            // response() 指定状态为1 等同于success
            $this->response(1, $data);
        } else {
            //错误码为0,并指定http 状态码为400
            $this->response(0, 'please POST data with field name "data"', 400);
        }
    }
    

protected $response 响应的数据

protected response(status,info) 快速设置响应方法

Session

基础用法

赋值

// 赋值(当前作用域)
Session::set('name','thinkphp');
// 赋值think作用域
Session::set('name','thinkphp','think');

判断是否存在

// 判断(当前作用域)是否赋值
Session::has('name');
// 判断think作用域下面是否赋值
Session::has('name','think');

取值

// 取值(当前作用域)
Session::get('name');
// 取值think作用域
Session::get('name','think');
如果name的值不存在返回null

删除

// 删除(当前作用域)
Session::delete('name');
// 删除think作用域下面的值
Session::delete('name','think');

指定作用域

// 指定当前作用域
Session::prefix('think');

取值并删除

// 取值并删除
Session::pull('name');
如果name的值不存在返回Null

清空

// 清除session(当前作用域)
Session::clear();
// 清除think作用域
Session::clear('think');

空文件

简介

用yaf框架加Thinkphp5的组件,组成了一个基于yaf的PHP高性能开发架构,在PHP7.1上性能爆发,为API而生。不知所命何名甚好,暂叫 thinkyaf 吧;我的yaf开发之旅也是基于此的 展开 收起
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
PHP
1
https://gitee.com/snailsir-code/thinkyaf.git
git@gitee.com:snailsir-code/thinkyaf.git
snailsir-code
thinkyaf
thinkyaf
master

搜索帮助