20170722_php_单例模式

本文介绍PHP中实现单例模式的方法,并解释了如何利用私有构造函数防止外部实例化,通过静态方法getInterface确保类仅被实例化一次。此外,还探讨了__toString()魔术方法的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 1 <?php
 2 
 3 class myClass{
 4     
 5     private static $obj = null;
 6 
 7     private function  __construc(){
 8 
 9     }
10 
11     public static function getInterface(){
12         if(self::$obj == null){
13             self::$obj = new self();
14         }
15 
16         return self::$obj;
17     }
18 
19     public function __toString(){
20         return 'this is __toString';
21     }
22 }
23 
24 $obj = myClass::getInterface();
25 echo $obj;

myClass的构造函数是private类型的,所以无法在外部被实例化,新建一个静态变量obj,新建一个静态类getInterface,如果obj为空则实例化,然后返回obj.

在类的外部,可以直接调用类的静态方法,静态方法返回的是被实例化的myClass类,而myClass只被实例化了一次,在别的地方调用getInterface,不会再重新实例化myClass,至此实现了实例化.

__toString()是php的魔术方法,需要输出对象类型时,可以使用__toString()返回数据.

转载于:https://www.cnblogs.com/tiantian123/p/7221831.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值