php单例模式

//第一步 普通类
//class sigle{
//
//}
// s 1 = n e w s i g l e ( ) ; / / s1=new sigle(); // s1=newsigle();//s2=new sigle();
注意两个对象是一个的时候,才全等
//if( s 1 = = = s1=== s1===s2){
// echo ‘是一个对象’;
//
//}else{
// ‘不是一个对象’;
//}

//第二部 封锁new操作
//class sigle{
// //外部new就会触发__construct()
// protected function __construct(){
//
// }
//}
//
//$s1 =new sigle();

//第三部 ,留一个接口来new对象
//class sigle{
// public static function getIns(){
// return new self();//内部new可以
//
// }
// protected function __construct(){
//
// }
//}
// s 1 = s i g l e : : g e t I n s ( ) ; / / s1=sigle::getIns(); // s1=sigle::getIns();//s2=sigle::getIns();
//if( s 1 = = = s1=== s1===s2){
// echo ‘是一个对象’;
echo $s1;/无法将类转换成字符串
//
//}else{
// echo ‘不是一个对象’;
//
//}

//第四部 ,getIns 先判断实例
//class sigle{
// protected static KaTeX parse error: Expected '}', got 'EOF' at end of input: … if(self::ins=null){
// self::KaTeX parse error: Expected 'EOF', got '}' at position 56: …态属性上 // }̲ // // // …ins;//内部new可以
//
// }
// protected function __construct(){
//
// }
//}
// s 1 = s i g l e : : g e t I n s ( ) ; / / s1=sigle::getIns(); // s1=sigle::getIns();//s2=sigle::getIns();
//if( s 1 = = = s1=== s1===s2){
// echo ‘是一个对象’;
echo KaTeX parse error: Expected 'EOF', got '}' at position 21: …法将类转换成字符串 // //}̲else{ // ech…s1=new multi();
// s 2 = n e w m u l t i ( ) ; / / e c h o ′ &lt; b r &gt; ′ ; / / i f ( s2=new multi(); //echo &#x27;&lt;br&gt;&#x27;; //if( s2=newmulti();//echo<br>;//if(s1
=$s2){
// echo ‘是一个对象’;
echo $s1;/无法将类转换成字符串
//
//}else{
// echo ‘不是一个对象’;
//
//}

第五步用final,纺织及城市,被修改权限(final最终的意思)
//class sigle{
// protected static KaTeX parse error: Expected '}', got 'EOF' at end of input: … if(self::ins=null){
// self::KaTeX parse error: Expected 'EOF', got '}' at position 56: …态属性上 // }̲ // // // …ins;//内部new可以
//
// }
// //方法前加final,则该方法不能被覆盖,类前加final,则该类不能被继承
// final protected function __construct(){
//
// }
//}
class multi extends sigle{
public function __construct(){

}
}//覆盖不了
// s 1 = s i g l e : : g e t I n s ( ) ; / / s1=sigle::getIns(); // s1=sigle::getIns();//s2=clone s 1 ; / / 被 克 隆 又 产 生 多 种 对 象 / / i f ( s1;//被克隆又产生多种对象 //if( s1;////if(s1
=$s2){
// echo ‘是一个对象’;
echo $s1;/无法将类转换成字符串
//
//}else{
// echo ‘不是一个对象’;
//
//}

//第六步 禁止clone(克隆不属于静态方法,在非静态方法操作静态属性不好)
class sigle
{
protected static $ins = null;

public static function getIns()
{
    if (self::$ins === null) {
        self::$ins = new self();//调用 new一个东西附带自身,将自身对象付到静态属性上
    }


    //自身属性返回
    return self::$ins;//内部new可以

}

//方法前加final,则该方法不能被覆盖,类前加final,则该类不能被继承
final protected function __construct()
{

}
//封锁克隆
final protected function __clone(){

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

a帅航

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值