摘要:概述谢谢大家的收藏与赞,这是对我最大的鼓励。这一系列文章主要是一些常用的类操作,回顾一下面向对象,我一直致力于小白文章的撰写,因为我也是小白,相信有人需要,希望读者能够喜欢。
概述
谢谢大家的收藏与赞,这是对我最大的鼓励。说明这一系列文章主要是一些PHP常用的类操作,回顾一下面向对象,我一直致力于小白文章的撰写,因为我也是小白,相信有人需要,希望读者能够喜欢。
关于PHP语言实现各种操作类,网上都能够找得到,但是质量参差不齐,有的代码不好懂,有时候看的眼花缭乱,所以我在这里统一作了一个整理(注意:是整理,每一种操作类,我至少会参考三份优秀代码,然后自己跑出来,而不是CV)
我会尽量遵守PSR规范,会有很详细易懂的注释
对于其中涉及到的相关知识点,比如设计模式,类型检测、浏览器架构、通信数据我也会简单讲讲,并留下相关链接,希望读者能够细嚼慢咽
阅读准备内容涉及面向对象、数据库、文件操作、购物车、分页、图像处理、JSON数据接口,你可能需要有一点知识基础,当然,这些内容都是独立的,可以选择性的参看。
Source CodeDATABASE = $dbname; /* 判断数据库是否连接 */ if(!self::$resource){ self::$resource = mysqli_connect($this->HOST,$this->USER,$this->ROOT,$this->DATABASE); /* 如果数据库连接失败 */ if(!self::$resource){ throw new Execption("mysql connect error".mysqli_connect_error()); } /* 设置编码 */ mysqli_query(self::$resource,"set names UTF8"); } return self::$resource; } } /**********Coding 1********************* $res = DB::getInstance()->connect("base"); print_r($res); die; ********************************/ /**********Coding 2********************* $res = new DB(); $res::getInstance()->connect(); 因为构造函数的私有性,这一句会产生fatal error 错误 ********************************/ /**********Coding 3********************* $a = DB::getInstance(); $a->connect(); $b = DB::getInstance(); $b->connect(); echo ""; print_r($a); print_r($b); 只会执行一次构造函数,说明$a $b是类的同一个实例 ********************************/解析如果不看构造函数和getInstance方法,其实可以看的出来,实现数据库操作类很简单,只需要把数据库连接函数的参数当作类成员变量,然后调用就行了,但是这里用了一个简单的设计模式——单例模式,总之加上它,代码会更便捷、健壮,下面简单讲讲。
为什么使用单例模式?其实从技术上考虑主要是考虑节省内存资源(因为访问数据库的话我们实例一次就够了,不需要重复实例[2019.5.28 update]),提升系统性能,但实际能够感受到的就是更方便,而且逼格高一些,所以用它。
什么是单例模式?举个例子,就是大楼只有一个入口,方便控制,用面向对象来说,就是一个类只有一个实例,方便管理。
代码部分是怎么实现单例模式的?首先声明一个私有构造函数,这样就不能在外面使用 new 来实例化多个对象了,你可以用coding 2的代码试一试,会报错
构造一个公共入口来获取类的实例,总的有实例可用撒,注意这个self指的是当前类,instanceof是检查当前变量是否为类的实例
如何检查单例效果?你可以用coding 3的代码查看输出结果,然后你会发现构造函数只执行了一次,说明,第一次实例化对象之后,后面的变量对对象的引用是一致的,说明实例实际上只有一个。
为什么getInstance方法是静态的呢?函数也是变量,静态化变量,不管引用多少次,都不会重复生成,比较节省空间,这里并不考虑多线程的问题。
参考链接PHP 单例模式解析和实战
结语
PHP 设计模式 单例模式
单例模式5种实现方式
语言中,静态方法和非静态方法你懂多少?有没懂的或者又觉得不对的,欢迎大家留言。
最后我会把源代码放在GitHub主页上,别担心,是中文,有需要的可以访问下载.
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/17607.html
摘要:概述谢谢大家的收藏与赞,这是对我最大的鼓励。这一系列文章主要是一些常用的类操作,回顾一下面向对象,我一直致力于小白文章的撰写,因为我也是小白,相信有人需要,希望读者能够喜欢。 概述 谢谢大家的收藏与赞,这是对我最大的鼓励。这一系列文章主要是一些PHP常用的类操作,回顾一下面向对象,我一直致力于小白文章的撰写,因为我也是小白,相信有人需要,希望读者能够喜欢。 说明 关于PHP语言实现...
摘要:验证码是什么验证码是自动区分计算机和人类的图灵测试的缩写,是一种区分用户是计算机和人的全自动程序。验证码的种类文字数字字母统称字符图片语音手势对于不同的验证码,验证的设计思路是一致的,我们以字符为例。 概述 谢谢大家的收藏与赞,这是对我最大的鼓励。 这一系列文章主要是一些PHP常用的类操作,回顾一下面向对象,我一直致力于小白文章的撰写,因为我也是小白,相信有人需要,希望读者能够喜欢。...
摘要:方式是最常用也是最直接的通常用于方法,其实我认为中的表单实质上也是方式,但这种传输方式数据有限,也不规范,只适合一些简单场景。如何封装上面讲了,和是目前主流的通信数据格式,下面就来讲讲如何封装,方便运用。 谢谢大家的收藏与赞,这是对我最大的鼓励。 必要性 不管在B/S架构中,还是C/S架构中,两端的数据通信(注:这里的通信是指的网络请求和回复操作)都无可避免,因为没有数据便没有内容,没...
摘要:方式是最常用也是最直接的通常用于方法,其实我认为中的表单实质上也是方式,但这种传输方式数据有限,也不规范,只适合一些简单场景。如何封装上面讲了,和是目前主流的通信数据格式,下面就来讲讲如何封装,方便运用。 谢谢大家的收藏与赞,这是对我最大的鼓励。 必要性 不管在B/S架构中,还是C/S架构中,两端的数据通信(注:这里的通信是指的网络请求和回复操作)都无可避免,因为没有数据便没有内容,没...
阅读 1786·2023-04-26 00:59
阅读 3097·2021-11-15 18:10
阅读 3023·2021-09-22 16:02
阅读 737·2021-09-02 15:15
阅读 3680·2019-08-30 15:56
阅读 1884·2019-08-30 15:54
阅读 2782·2019-08-29 16:31
阅读 1985·2019-08-29 16:10