PHP_单例模式、实例代码
2018-06-22 05:25:08来源:未知 阅读 ()
在PHP中实例化一个对象,就会新开辟一个新内存空间,当一些业务要实例化多个对象时,会占用大量内存。这个问题可以用单例模式解决。
我们实例化对象可以直接new出来,也可以通过类中的构造函数 __construct 、析构函数 __destruct、克隆__clone来实现,我们可以将这3个函数私有化,不让外部这样实例化对象;然后设置一个公共静态方法,通过类名调用。这是“三私一公”。
具体代码如下:
1 <?php 2 3 //先创建一个类,后面调用 4 class A { 5 6 } 7 8 //创建单例类 9 class One{ 10 //设置一个私有静态的属性,用于保存对象 11 private static $obj; 12 13 //将构造方法私有化 14 private function __construct(){ 15 } 16 17 //创建一个公共的静态方法,静态方法是为了直接通过类名调用 18 static function getObj($className){ 19 /** 20 * instanceof 看一个对象是否属于这个类 21 *如果实例化的对象属于这个类 22 */ 23 if(self::$obj instanceof $className){ 24 //就把这个对象返回 25 return self::$obj; 26 }else{ 27 //如果否,就实例化这个对象再返回 28 self::$obj = new $className; 29 return self::$obj; 30 } 31 } 32 33 //将克隆私有化 34 private function __clone(){ 35 } 36 } 37 38 //测试 39 //无论实例化多少次类A,都只会得到一个对象 40 $one1 = One::getObj('A'); 41 $one2 = One::getObj('A'); 42 $one3 = One::getObj('A'); 43 var_dump($one1); 44 var_dump($one2); 45 var_dump($one3);
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇:thinkphp零碎小知识
- PHP写UltraEdit插件脚本实现方法 2020-03-29
- php 带逗号千位符数字的处理方法 2020-03-28
- PHP三元运算符的结合性介绍 2020-03-28
- PHP静态延迟绑定和普通静态效率的对比 2020-03-28
- 基于php流程控制语句和循环控制语句 2020-03-28
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash