封裝的二維碼生成

<?php


namespace app\admin\controller;


class Qrcode
{
    //表示項目主目錄名稱,其他表示二維碼的配置項
    private $config = ['level'=>'L','size'=>"12",'margin'=>"2",'save'=>true,'upload_url_name'=>'uploads'];//默認配置



    /*
    *$content: 表示要生成二維碼的字符串
    *$file_url:表示二維碼上傳的路徑,從項目主目錄名下一級算起
    *$name:表示最裏面那一級的目錄,主要作用如不填則默認爲當天日期,填寫了則爲填寫的目錄
    *$end_name: 表示文件名,不填寫則系統隨機
    *$config: 表示二維碼的配置項
    **/
    //根據字符串創建二維碼
    public function create_code($content='',$file_url='',$name='',$end_name='',$config = []){
        if($name == ''){
            $name = date('Ymd',time());
        }
        if(empty($config)){
            $config = $this->config;
        }
        if($end_name == ''){
            $end_name = date("YmdHis").mt_rand(1000,9999).'.png';
        }
        $file_url = $file_url."/".$name."/";
        $get_file_url = $this->deal_file_url($file_url);
        Vendor('phpqrcode');//引入文件
        $content = $content;
        $outfile = $get_file_url['b'].$end_name;
        $level   = $config['level'];
        $size    = $config['size'];
        $margin  = $config['margin'];
        $save    = $config['save'];
        $res = \QRcode::png($content, $outfile, $level, $size, $margin, $save);
        return '/'.$config['upload_url_name'].'/'.$file_url.$end_name;//切記:如果你的項目是將域名直接解析到項目的public目錄下的,需要你改一些返回的路勁,如果是解析到項目根目錄下的情況,則不需要改
    }


    //處理url以便創建目錄
    public function deal_file_url($file_url){
        $url_arr = explode('/',$file_url);
        foreach($url_arr as $key=>$val){
            if($val != '..' && $val != '.'  && $val != ''){
                $data[] = $val;
            }
        }
        $file_url = ROOT_PATH.implode("\\",$data).'\\';
        $up_url = str_replace('\\',"/",$file_url);
        $data_arr['a'] = $file_url;
        $data_arr['b'] = $up_url;
        if(!is_dir($file_url)){
            mkdir($file_url,0777,true);
        }
        return $data_arr;
    }

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章