php单例模式的讲解(代码示例)

如果下载的源码需要作者授权,请更换源码。本站免费分享资源不会增加授权

本篇文章给大家带来的内容是关于php单例模式的讲解(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

单例模式是一种比较常用的设计模式,在很多框架中可以看到它的身影。通过单例模式可以确保类只有一个实例化,从而方便对实例个数的控制并节约系统资源。

<?php  use Exception;  class Singleton {     /**      * 对象实例      * @var object      /     public static $instance;          /**      * 获取实例化对象      /     public static function getInstance()     {         if (!self::$instance instanceof self) {             self::$instance = new self();         }                  return self::$instance;     }          /**      * 禁止对象直接在外部实例      /     private function __construct(){}          /**      * 防止克隆操作      /     final public function __clone()     {         throw new Exception('Clone is not allowed !');     } }

一个系统中可能会多次使用到单例模式,为了更加方便的创建,可以试着建立一个通用的抽象:

// SingletonFacotry.php <?php  use Exception;  abstract class SingletonFacotry {     /**      * 对象实例数组      * @var array      /     protected static $instance = [];          /**      * 获取实例化对象      /     public static function getInstance()     {         $callClass = static::getInstanceAccessor();         if (!array_key_exists($callClass, self::$instance)) {             self::$instance[$callClass] = new $callClass();         }                  return self::$instance[$callClass];     }          abstract protected static function getInstanceAccessor();          /**      * 禁止对象直接在外部实例      /     protected function __construct(){}             /**      * 防止克隆操作      /     final public function __clone()     {          throw new Exception('Clone is not allowed !');     } }
// A.php  <?php  class A extends SingletonFactory {     public $num = 0;      protected static function getInstanceAccessor()     {         return A::class;     } }  $obj1 = A::getInstance(); $obj1->num++; var_dump($obj1->num); // 1 $obj2 = A::getInstance(); $obj2->num++; var_dump($obj2->num); // 2
本文由(壳先生)整理自网络,如转载请注明出处:https://www.mrshell.com;
本站发布的内容若侵犯到您的权益,请邮件联系 i@mrshell.com 删除,我们将及时处理!
===========================================================================

1. 本站大部分下载资源收集于网络,不保证其完整性以及安全性,请下载后自行测试。
2. 本站资源仅供学习和交流使用,版权归资源原作者所有,请在下载后24小时之内自觉删除。
3. 不得使用于非法商业用途,商用请支持正版!不得违反国家法律,否则后果自负!
4. 若作商业用途,请购买正版,由于未及时购买和付费发生的侵权行为,与本站无关。
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!

=================================================================

壳先生 » php单例模式的讲解(代码示例)

发表评论

提供最优质的资源集合

立即查看 了解详情