首页 > 编程 > PHP > 正文

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

2020-03-22 20:12:18
字体:
来源:转载
供稿:网友
本篇文章给大家带来的内容是关于php单例模式的讲解(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

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

 ?phpuse /Exception;html' target='_blank'>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 ?phpuse /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  ?phpclass 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

以上就是php单例模式的讲解(代码示例)的详细内容,PHP教程

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表