• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    PHP单例模式实例分析【防继承,防克隆操作】

    本文实例讲述了PHP单例模式。分享给大家供大家参考,具体如下:

    ?php
    //单列模式
    // //1.普通类
    // class singleton{
    // }
    // $s1 = new singleton();
    // $s2 = new singleton();
    // //注意,2个变量是同1个对象的时候才全等
    // if ($s1 === $s2) {
    //   echo '是一个对象';
    // }else{
    //   echo '不是一个对象';
    // }
    // //2.封锁new操作
    // class singleton{
    //   protected function __construct(){}
    // }
    // $s1 = new singleton();//PHP Fatal error: Call to protected singleton::__construct()
    // //3.留个接口来new对象
    // class singleton{
    //   protected function __construct(){}
    //   public static function getIns(){
    //     return new self();
    //   }
    // }
    // $s1 = singleton::getIns();
    // $s2 = singleton::getIns();
    // if ($s1 === $s2) {
    //   echo '是一个对象';
    // }else{
    //   echo '不是一个对象';
    // }
    // //4.getIns先判断实例
    // class singleton{
    //   protected static $ins = null;
    //   private function __construct(){}
    //   public static function getIns(){
    //     if (self::$ins === null) {
    //       self::$ins = new self();
    //     }
    //     return self::$ins;
    //   }
    // }
    // $s1 = singleton::getIns();
    // $s2 = singleton::getIns();
    // if ($s1 === $s2) {
    //   echo '是一个对象';
    // }else{
    //   echo '不是一个对象';
    // }
    // //继承
    // class A extends singleton{
    //   public function __construct(){}
    // }
    // echo 'br>';
    // $s1 = new A();
    // $s2 = new A();
    // if ($s1 === $s2) {
    //   echo '是同一个对象';
    // }else{
    //   echo '不是同一个对象';
    // }
    // //5.防止继承时被修改了权限
    // class singleton{
    //   protected static $ins = null;
    //   //方法加final则方法不能被覆盖,类加final则类不能被继承
    //   final private function __construct(){}
    //   public static function getIns(){
    //     if (self::$ins === null) {
    //       self::$ins = new self();
    //     }
    //     return self::$ins;
    //   }
    // }
    // $s1 = singleton::getIns();
    // $s2 = singleton::getIns();
    // if ($s1 === $s2) {
    //   echo '是同一个对象';
    // }else{
    //   echo '不是同一个对象';
    // }
    // //继承
    // // class A extends singleton{
    // //   public function __construct(){}
    // // }
    // //Cannot override final method singleton::__construct()
    // echo 'hr>';
    // $s1 = singleton::getIns();
    // $s2 = clone $s1;
    // if ($s1 === $s2) {
    //   echo '是同一个对象';
    // }else{
    //   echo '不是同一个对象';
    // }
    //6.防止被clone
    class singleton{
      protected static $ins = null;
      //方法加final则方法不能被覆盖,类加final则类不能被继承
      final private function __construct(){}
      public static function getIns(){
        if (self::$ins === null) {
          self::$ins = new self();
        }
        return self::$ins;
      }
      // 封锁clone
      final private function __clone(){}
    }
    $s1 = singleton::getIns();
    $s2 = clone $s1; //Call to private singleton::__clone() from context
    if ($s1 === $s2) {
      echo '是同一个对象';
    }else{
      echo '不是同一个对象';
    }
    
    

    更多关于PHP相关内容感兴趣的读者可查看本站专题:《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

    希望本文所述对大家PHP程序设计有所帮助。

    您可能感兴趣的文章:
    • PHP 工厂模式使用方法
    • php设计模式 Factory(工厂模式)
    • PHP中“简单工厂模式”实例代码讲解
    • php基础设计模式大全(注册树模式、工厂模式、单列模式)
    • PHP实现单例模式最安全的做法
    • php单例模式实现(对象只被创建一次)
    • php利用单例模式实现日志处理类库
    • PHP设计模式之注册树模式分析
    • PHP单例模式数据库连接类与页面静态化实现方法
    • PHP工厂模式、单例模式与注册树模式实例详解
    上一篇:在Laravel5中正确设置文件权限的方法
    下一篇:PHP观察者模式实例分析【对比JS观察者模式】
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    PHP单例模式实例分析【防继承,防克隆操作】 PHP,单例,模式,实例分析,