PHP生成二维码单态模式封装类
来源:互联网 发布:骨架软件 编辑:程序博客网 时间:2024/05/20 22:26
PHP生成二维码封装类
简介:
1,php生成二维码,利用单态设计模式进行封装,方便调用。2,里边融合了面向对象的基础知识,几个魔术方法,加深熟练3,如果需要php生成二维码的基础代码,我会把上一篇链接在本篇文章
代码:
<?phpclass makeqrcode{ private static $QRobj; private $data; private $level = 'Q'; private $size = '10'; private $margine = '2'; private $filename = '../images/qrcode.png'; private $qrcode_logo = '../images/qrcode_logo.png'; private $rate = 5; private function __construct($data) { require_once '../QRcode/phpqrcode.php'; $this->data = $data; } public function __tostring() { echo '二维码生成类'; } public function __set($name,$value) { switch($name) { case 'level': if(!($value == 'L' || $value == 'M' || $value == 'Q' || $value == 'H')){ echo 'level参数错误'; return; } break; case 'size': if( $value <= 0){ echo '$size参数不能小于等于0'; return; } break; case 'margine': if( $value <= 0){ echo '$margine不能小于0'; return; } break; case 'rate': if( $value <= 1){ echo '$rate不能小于1'; return; } break; case 'finename' || 'qrcode_logo': echo '这两个参数不能修改'; return; break; } $this->$name = $value; } public function __get($name) { echo $this->$name; } public function __isset($name) { if($name == 'filename' || $name == 'qrcode_logo'){ echo '不用测试,必须要有'; return; } $bool = isset($this->$name); return $bool; } public function __unset($name) { if($name == 'filename' || $name == 'qrcode_logo'){ echo "不能删除"; return; } unset($this->$name); } public function __call($funname,$param) { echo '您调用的方法'.$funname.'不存在'; echo '参数为'; print_r($param); } //单态模式生成对象 static function newObj($data) { if(is_null(self::$QRobj)){ self::$QRobj = new self($data); } return self::$QRobj; } //生成纯二维码 public function makeqrcode() { QRcode::png($this->data,$this->filename,$this->level,$this->size,$this->margine); } //生成夹有logo的二维码 public function qrCodeLogo() { $this->makeqrcode(); $QRcode = $this->filename; $logo = $this->qrcode_logo; //imagecreatefromstring() 从字符串中的图像流新建一图像 $QR = imagecreatefromstring(file_get_contents($QRcode)); $LG = imagecreatefromstring(file_get_contents($logo)); $QR_width = imagesx($QR); $QR_height = imagesy($QR); $LG_width = imagesx($LG); $LG_height = imagesy($LG); $QR_LG_width = $QR_width/$this->rate; $tmp = $LG_width/$QR_LG_width; $QR_LG_height = $LG_height/$tmp; $width = ($QR_width-$QR_LG_width)/2; //从新组合 imagecopyresampled()重采样拷贝部分图像并调整大小 imagecopyresampled($QR,$LG,$width,$width,0,0,$QR_LG_width,$QR_LG_height,$LG_width,$LG_height); imagepng($QR,'../images/qr_logo_code.png'); } //清除掉data public function __destruct() { $this->data = ""; }}$obj = makeqrcode::newObj('nihao');$obj->qrCodeLogo();
归纳总结:
面向对象中的魔术方法:
__set() 当给私有属性设定值的时候会访问该方法,怎么处理方法里设置 __get() 当访问私有属性的时候回访问该方法,自己设置如何处理 __call() 当访问类中没有的方法的时候,调用该方法 __tostring() __construct() __destruct()
单态设计模式:
节约内存,自始至终实例化一个对象。所以不能随便new,用构造方法私有化即可。用成员方法new对象 ,但没对象访问,所以成员方法静态化用类名访问。如何判断到你new没new,可加一个属性来判断, 静态方法不能访问非静态属性,所以对象属性静态化。最后就是静态方法,静态属性。静态方法里判 断静态属性。只能实例化一次。
0 0
- PHP生成二维码单态模式封装类
- php+二维码图片生成封装成对象类
- PHP二维码生成类库生成二维码
- php单例模式连接数据库封装类
- php基于单例模式封装mysql类完整实例
- php基于单例模式封装mysql类完整实例
- PHP封装的一个单例模式Mysql操作类
- php单例模式连接数据库封装类
- php用类生成二维码
- php生成二维码类库
- PHP利用PHP QR Code二维码类生成二维码
- php单态模式
- jquery生成二维码插件-封装
- QT 生成二维码接口封装
- php使用二维码类库生成图片二维码
- php生成二维码的类及方法
- PHP生成二维码图像的类QRcode
- php 使用phpqrcode类生成二维码
- CDN缓存那些事
- P2024 食物链
- css3的transition
- 简述java内存模型 java虚拟机JVM
- NET SHARE
- PHP生成二维码单态模式封装类
- 关于JAVA中Calendar类的部分功能记录
- 小知识(一、netstat)
- Android Monkey Test
- Python爬取廖雪峰Python教程
- Guava学习笔记:Preconditions优雅的检验参数
- @RequestMapping和RequestParam注解的使用
- hdu2045 c语言详解
- Makefile常用万能模板(包括静态链接库、动态链接库、可执行文件)