年年有"余"

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1817|回复: 0

PHP单例设计模式的基本实现

[复制链接]
  • TA的每日心情

    2024-10-15 10:05
  • 签到天数: 372 天

    [LV.9]以坛为家II

    发表于 2016-1-1 11:13:18 | 显示全部楼层 |阅读模式
    [PHP] 纯文本查看 复制代码
    <?php
            
            class Person{
                    // 创建一个静态变量来保存对象地址
                    private static $obj = NULL;
                    
                    // 声明一个静态方法来创建对象
                    static function getObject(){
                            if (self::$obj == NULL){
                                    self::$obj = new self();
                            }
                            return self::$obj;
                    }
                    
                    // 构造方法,如果设置为private则无法用new创建对象
                    // 因为new创建对象时会在外部访问构造方法
                    // private只允许内部成员方法访问,只能内部创建对象
                    // 骑过该方法的调用来验证对象的创建时间与次数
                    private function __construct(){
                            echo "对象初始化<br/>";
                    }
                    
                    // 析构方法在对象被释放时调用
                    // 单例只会在脚本执行结束后才会被释放
                    // 骑过该方法的调用来验证对象的释放时间
                    function __destruct(){
                            echo "对象被释放<br/>";
                    }
            }
            
            $p1 = Person::getObject();
            $p2 = Person::getObject();
            $p3 = Person::getObject();
            $p4 = Person::getObject();
    执行结果:
    对象初始化
    对象被释放
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    手机版|小黑屋|Archiver|iOS开发笔记 ( 湘ICP备14010846号 )

    GMT+8, 2024-11-23 18:24 , Processed in 0.044919 second(s), 19 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表