以前也用phpqrcode生成二維碼,但是并沒有将這個功能進行過封裝,是以每次用的時候又要需要重新看文檔,重複寫一遍,後來覺得太麻煩,為何不将這一些常用的類進行封裝,以後用的時候隻要關注自身的業務邏輯不挺好嗎!
我是基于tp5編寫的擴充類,是以如果你也是用這個架構,可以直接将擴充類放在extend目錄下即可,
存放目錄:

2.引用phpqrcode類,這個類你可以下載下傳:https://sourceforge.net/projects/phpqrcode/files/
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.雖然功能簡單,但是進行封裝了以後,對于下次用到的時候還是很有幫助的和便捷的