ThinkPHP6.0学习笔记-杂项

杂项

Seesion

使用seesion需要开启初始化,中间件文件middleware.php

// session初始化
\think\middleware\SessionInit::class,
class Store
{
    public function session()
    {
        Session::set('user','mirror');
        return Session::get('user');
    }
}

使用::set()/::get()方法设置Session的存取

Session::set('user','Mirror');//设置名称user和值mirror
Session::get('user');	//读取user的session

::get() 的第二个参数可以设置默认值

::all() => 读取全部的session

使用Request请求也可以获取session:

Request::session('user');//读取user的session
Request::session(); //读取全部的session

::has() 判断是否赋值

::delete() 删除session

::pull() 取值后删除

::clear()清空整个seesion

::flash() 设置闪存数据,只请求一个有效的情况


Cookie是在客户端存储,默认情况下开启初始config/cookie.php

设置Cookie:::set()

Cookie::set('name','value',3600)

参数1:Cookie名称

参数2:Cookie值

参数3:Cookie有效时间(秒)

长期存储COOKIE:::forever()

Cookie::forever('name','value')

获取Cookie:::get() Request::cookie()

Cookie::get('name');

Request::cookie('name');

::has() 判断是否赋值

::delete() 删除session


缓存功能-File

缓存配置文件cache.php,默认生成在runtime/cache目录;

::set():设置一个缓存

::has():判断缓存是否存在

::get():从缓存中获取相应数据(无数据返回NULL)

::inc():自增 、::dec 自减(可以设置步长)

::push():实现缓存的数组数据追加

::delete():删除指定的缓存文件

::pull():获取缓存值,然后删除这个缓存

::remember():如果数据不存在则写入数据(可以依赖注入)

::clear():清除所有缓存

::tag():可以将多个缓存归类到标签中,方便统一管理

上传功能

建立一个上传表单:

<form action="Upload" enctype="multipart/form-data" method="post">
    <input type="file" name="image">
    <input type="submit" name="提交">
</form>

在控制器类中创建一个upload.php,获取上传的数据:

class Upload
{
    public function index()
    {
        // 获取上传的数据
        $file = Request::file('image');
        // 实现文件上传并写入指定目录
        $sevename = Filesystem::putFile('txt',$file);
    }
}

Request::file():可以获取文件上传表单,生成一个FILE对象;

Filesystem::putFile():可以将FILE对象文件上传到指定的目录位置,配置文件config/filesystem.php;参数1:目录名,参数2:FILE文件对象,参数3:上传文件的命名规则(date、md5、sha1等)也支持自定义名规则;

多文件上传

<form action="Upload" enctype="multipart/form-data" method="post">
    <input type="file" name="image[]"><br>
    <input type="file" name="image[]"><br>
    <input type="file" name="image[]"><br>
    <input type="file" name="image[]"><br>
    <input type="submit" name="提交">
</form>

class Upload
{
    public function index()
    {
        // 获取上传的数据
        $file = Request::file('image');
        // 实现文件上传并写入指定目录
        $sevename = [];
        foreach($file as $files){
            $sevename[] = Filesystem::putFile('txt',$files);
        }
    }
}

文件验证

结合验证器,针对上传的文件进行验证:

验证参数 说明
fileSize 上传文件的最大字节
fileExt 文件后缀,多个用逗号分割或者数组
fileMime 文件MIME类型,多个用逗号分割或者数组
image 验证图像文件的尺寸和类型
class Upload
{
    public function index()
    {
        // 获取上传的数据
        $file = Request::file('image');
        // 验证
        $validate = Validate::rule([
            'image' =>  'file|fileExt:jpg,png,gif'
        ]);

        $result = $validate->check([
            'image'=>$file
        ]);

        // 实现文件上传并写入指定目录
        if($result) {
            foreach ($file as $files) {
                $sevename = Filesystem::putFile('txt', $files);
            }
            dump($sevename);
        } else {
            dump($validate->getError());
        }
    }
}

多语言

中间件文件middleware.php中开启多语言切换功能

\think\middleware\LoadLangPack::class

配置文件config/lang.php文件,设置zh-cn中文语言

验证码功能

验证码不是内置功能,需要composer引入:

composer require topthink/think-captcha

<div>{:captcha_img()}</div>

支持点击刷新

<img src="{:captcha_src()}" alt="captcha">

不支持点击刷新

class Upload
{
    public function index()
    {
        $validate = Validate::rule([
            'captcha'   =>  'require|captcha'
        ]);

        $result = $validate->check([
            'captcha'   =>  input('post.code')
        ]);

        if($result){
            return '验证码输入正确';
        } else {
            return '验证码输入错误';
        }
    }
}

参数 描述 默认
codeSet 验证码字符集合
expire 验证码过期时间(s) 1800
math 使用算术验证码 false
useZh 使用中文验证码 false
zhSet 中文验证码字符串
useImgBg 使用背景图片 false
fontSize 验证码字体大小(px) 25
useCurve 是否画混淆曲线 true
useNoise 是否添加杂点 true
imageH 验证码图片高度,设置为0为自动计算 0
imageW 验证码图片宽度,设置为0为自动计算 0
length 验证码位数 5
fontttf 验证码字体,不设置是随机获取
bg 背景颜色 [243, 251, 254]
reset 验证成功后是否重置 true

配置文件config/captcha.php

分页功能

模型操作和数据库操作都可以使用paginate()方法实现:

return View::fetch('index',[
    'list'	=>	User::paginate(5)
]);

<table border="1">
    <tr>
        <th>编号</th>
        <th>姓名</th>
        <th>性别</th>
        <th>邮箱</th>
        <th>价格</th>
    </tr>
    {volist name="list" id="user"}
    <tr>
        <td>{$user.id}</td>
        <td>{$user.username}</td>
        <td>{$user.gender}</td>
        <td>{$user.email}</td>
        <td>{$user.price}</td>
    </tr>
    {/volist}
</table>

上述实现以五条数据显示表格

<style>
    .pagination {
        list-style: none;
        margin: 0;
        padding: 0;
    }
    .pagination li {
        display: inline-block;
        padding: 20px;
    }
</style>

<table border="1">
    <tr>
        <th>编号</th>
        <th>姓名</th>
        <th>性别</th>
        <th>邮箱</th>
        <th>价格</th>
    </tr>
    {volist name="list" id="user"}
    <tr>
        <td>{$user.id}</td>
        <td>{$user.username}</td>
        <td>{$user.gender}</td>
        <td>{$user.email}</td>
        <td>{$user.price}</td>
    </tr>
    {/volist}
</table>

{$list|raw}
<ul class="pagination">


上述实现了分页查询按钮的功能

默认情况下,生成的分页输出是完整分页功能,带总分页数据和上下页码,分页样式只需要通过样式修改即可,完整分页默认生成的分页输出代码为:

<ul class="pagination">
    <li><a href="?page=1">&laquo;</a></li>
    <li><a href="?page=1">1</a></li>
    <li class="active"><span>2</span></li>
    <li class="disabled"><span>&raquo;</span></li>
</ul>

主要的分页参数如下:

参数 描述
list_rows 每页数量
page 当前页
path url路径
query url额外参数
fragment url锚点
var_page 分页变量

图像处理功能

不是系统内置功能

composer require topthink/think-image

创建图像处理对象:

$image = Image::open('image.png')

获取图像处理对象后,可以获得各种属性:

// 图片宽度
$image->width();
// 图片高度
$image->height();
// 图片类型
$image->type();
// 图片MIME
$image->mime();
// 图片大小
$image->size();

裁剪图片:crop()

$image->crop(550,400)->save('crop1.png')

使用thumb()方法,生成缩略图

$image->thumb(500,500)->save('thumb1.png')

使用rotate()方法:旋转图片默认90度

$image->rotate(180)->save('rotate1.png');

使用water()方法:给图片添加水印默认位置右下角

$image->water('mirror.png')->save('water1.png')

使用text()方法:给图片添加文字水印

$image->text('mirror',getcwd().'/1.ttf',20,'#ffffff')
    ->save('text1.png');

猜你喜欢

转载自www.cnblogs.com/wangyuyang1016/p/12769766.html