<?php /** * 单例模式 * 备注:PHP脚本执行完毕后会回收所有资源,所以PHP的单例模式仅在页面级别有效,它不像Java的单例可以常 * 驻内存且可跨页面。如果使用Swoole那么就非常适合使用单例模式,尤其是数据库操作类,使用单例模 * 式可以避免频繁使用new创建实例。 */ class Singleton { private static $instance; // 设置一个静态私有属性保存本类的实例 private $name; // 设置一个私有属性用于测试 /** * 私有化构造方法,禁止外部创建实例 */ private function __construct() { } /** * 私有化克隆方法,禁止复制实例 */ private function __clone() { } /** * 获取实例 */ public static function getInstance() { // 检查实例是否已创建 if (!(self::$instance instanceof self)) { self::$instance = new self(); } return self::$instance; } public function setName($name) { $this->name = $name; } public function getName() { return $this->name; } } $instance1 = Singleton::getInstance(); $instance2 = Singleton::getInstance(); $instance3 = Singleton::getInstance(); // 设置实例1的name属性值(实例2和实例3不设置) $instance1->setName('张三'); echo "\$instance1的name属性值为" . $instance1->getName(); // 输出结果:$instance1的name属性值为张三 echo "\$instance2的name属性值为" . $instance2->getName(); // 输出结果:$instance2的name属性值为张三 echo "\$instance3的name属性值为" . $instance3->getName(); // 输出结果:$instance3的name属性值为张三
Copyright © 2024 码农人生. All Rights Reserved