天天看點

php封裝類,phpqrcode生成二維碼并儲存到伺服器

以前也用phpqrcode生成二維碼,但是并沒有将這個功能進行過封裝,是以每次用的時候又要需要重新看文檔,重複寫一遍,後來覺得太麻煩,為何不将這一些常用的類進行封裝,以後用的時候隻要關注自身的業務邏輯不挺好嗎!

我是基于tp5編寫的擴充類,是以如果你也是用這個架構,可以直接将擴充類放在extend目錄下即可,

存放目錄:

php封裝類,phpqrcode生成二維碼并儲存到伺服器

2.引用phpqrcode類,這個類你可以下載下傳:https://sourceforge.net/projects/phpqrcode/files/

php封裝類,phpqrcode生成二維碼并儲存到伺服器

3.準備工作做好以後,上代碼

<?php
/**
 * php二維碼操作類
 下載下傳位址: https://sourceforge.net/projects/phpqrcode/files/
 */

namespace phpqrcode;


class phpqrcode{

	//表示項目主目錄名稱,其他表示二維碼的配置項
	private $config = ['level'=>'L','size'=>"12",'margin'=>"2",'save'=>true,'total_project_name'=>'tutaiservicer'];//預設配置



	/*
	*$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.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 $_SERVER['SERVER_NAME'].'/'.$config['total_project_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;
    }


}
           

4.雖然功能簡單,但是進行封裝了以後,對于下次用到的時候還是很有幫助的和便捷的