thinkphp5.0学習(十一):TP 5.0その他


一、キャッシュ
1.キャッシュの役割
データベースの圧力を減らすユーザーのインタラクションが少ない
2.TPによるキャッシュのサポート
サポートキャッシュタイプはfile,memcache,wincache,sqlite,redisおよびxcacheです.
3.キャッシュ設定(アプリケーションconfig.php)
 'cache'                  => [
    //     
     'type'   => 'File',
     //       
     'path'   => CACHE_PATH,
     //     
     'prefix' => '',
     //       0      
     'expire' => 0,
 ],

4.使用
1.キャッシュの設定
Cache::set("userData",$data,200);
cache(  , ,  );

2.リードキャッシュ
dump(Cache::get("userData"));
dump(cache("userData"));

3.キャッシュの削除
dump(Cache::rm("userData"));
cache("userData",null);

4.キャッシュをクリア
Cache::clear();

5.キャッシュの使用
public function huancun(){
    //         
    if($data=cache('userData')){
        //       
    }else{
        //          
        $data=Db::table("user")->select();
        cache("userData",$data,20);
    }
    //     
    $this->assign("data",$data);
    //     
    return $this->fetch();
}

二、Session
1.セッションの設定
//          null
public function setSession(){
    //    
    dump(Session::set("name","  "));
    //    
    session("name","100");
}

2.セッションの取得
public function getSession(){
    //    
    dump(Session::get("name"));
    //    
    session("name");
}

3.判断セッション
dump(Session::has("name1"));
dump(session("?name"));

4.セッションの削除
dump(Session::delete("name"));
//      null
dump(session("name",null));

5.クリアセッション
Session::clear();
session(null);

三、Cookie
1.クッキーの設定
Cookie::set("name","ltt");
Cookie::set("info","wanli",50);

cookie('time','2017-10-25');
cookie('age',5,50);

2.クッキー取得
//     
dump(Cookie::get("name"));
dump(Cookie::get("info"));
dump(cookie("time"));
dump(cookie("age"));

3.クッキーが設定されているかどうかを判断する
dump(Cookie::has("name"));
dump(Cookie::has("info"));
dump(cookie("?time"));
dump(cookie("?age"));

4.クッキーの削除
Cookie::delete("name");
cookie("time",null);

5.クリアクッキー
Cookie::clear();
cookie(null);

四、ページング
1.コントローラ
//paginate       true            ,       
$data=Db::table("user")->paginate(3,true);
    $this->assign("data",$data);
    return $this->fetch();
}

2.ページ内
{volist name="data" id="val"}
    <tr>
        <td>{$val.id}td>
        <td>{$val.name}td>
        <td>{$val.pass}td>
    tr>
{/volist}
{$data->render()}

五、ファイルのアップロード
1.単一ファイルアップロード
1.ページ内
<form action="{:url('upload')}" method="post" enctype="multipart/form-data">
    <p>
        File:
        <input type="file" name="file">input>

    p >
    <p><input type="submit" value="  ">input>p >
form>

2.コントローラ
public function upload(Request $request){
//     
    $file=$request->file("file");
    //       
    if($info=$file->move('./upload/')){
        dump($info->getsaveName());
    }else{
        dump($info->getError());
    }
    // dump($file);
}

2.マルチファイルアップロード
1.ページ内
<form action="{:url('uploads')}" method="post" enctype="multipart/form-data">
    <p>
        File:
        <input type="file" name="file[]">input>
        <input type="file" name="file[]">input>
        <input type="file" name="file[]">input>
    p >
    <p><input type="submit" value="  ">input>p >
form>

2.コントローラ
public function uploads(Request $request){
    //         
    $files=$request->file("file");
    foreach ($files as $key => $file) {
        if ($info=$file->move("./upload/")) {
            dump($info->getsaveName());
        }else{
            dump($info->getError());
        }
    }
    // dump($files);
}

六、検証コード
1.まずシステムが検証コードをサポートしているかどうかを判断する(プロジェクトファイルvendortopthinkthink-captcha)
composerインストールがサポートされていない場合
2.使用
1.ページ内
<form action="{:url('check')}" method="post">
    <p>
           :{:captcha_img()}
        < img src="{:captcha_src()}">
    p >
    <p><input type="text" name="code" >input>
    p >
    <p>
        <input type="submit" value="  ">input>
    p >
form>

2.コントローラにおける判定検証コード
public function check(){
    $code=input('post.code');
    //          
    if(captcha_check($code)){
        echo "ok";
    }else{
        echo "error";
    }
}

3.検証コード関連設定
 //     
 'captcha'=>[
     'codeSet'=>'123',
     //         
     'useZh'=>true,
     //     
     'zhSet'=>"   ",
     //          
     'useImgBg' => false,
     //       
     'fontSize' => 25,
     //        (px)
     'useCurve' => true,
     //        
     'useNoise' => true,
     //       
     'imageH'   => 0,
     //        
     'imageW'   => 0,
     //        
     'length'   => 5,
     //      
     'fontttf'  => '',
     //      ,       
     'bg'       => [243, 251, 254],
     //     
     'reset'    => true,
     //          
 ],

七、画像処理
1.画像を読み取る
$image=Image::open("./img/c.jpg");

2.基本情報の取得
dump($image->width());
dump($image->height());
dump($image->type());
dump($image->size());
dump($image->mime());

3.画像の切り取り
// crop(300,300,100,100);   100,100      300 300   
    //           
    $image->crop(300,300)->save("./img/cai.jpg");
    //       
    $image->crop(300,300,100,100)->save("./img/cai1.jpg");

4.画像の拡大・縮小
//        
    // $image->thumb(300,300)->save('./img/th.jpg');

    //  ,            
    const THUMB_SCALING   = 1; 
    //  ,            
    const THUMB_FILLED    = 2; 
    //  ,           
    const THUMB_CENTER    = 3; 
    //  ,            
    const THUMB_NORTHWEST = 4;
    //  ,            
    const THUMB_SOUTHEAST = 5; 
    //  ,             
    const THUMB_FIXED     = 6; 
    $image->thumb(300,300,2)->save('./img/th.jpg');

5.画像の反転
$image->flip()->save("./img/fan.jpg");

6.画像の回転
//rotate()      90 
$image->rotate(180)->save("./img/xuanzhuan.jpg");

7.ウォーターマークの追加
//     
    //        ,1    ,5    ,50    
    $image->water("./img/logo3.png",1,50)->save("./img/water.jpg");
//     
    $image->text("   ",'FZSTK.TTF',28,'#ff0000')->save("./img/text.jpg");