php 单例模式 示例

    // 设计模式: 单例模式
    // 作用: 最终只能成功实例化一次对象, 多次实例化还是同一个对象


    // 1. 不让用户在外面new        -- 封装构造方法   私有的/ 受保护的
    // 2. 无法使用构造方法          -- 在类内创建 普通的方法调用构造方法
    // 3. 无法使用普通方法          -- 将 普通方法 定义为 静态方法
    // 4. 在静态方法内不能用$this   -- 在静态方法内 new self
    // 5. 多次调用静态方法重复链接  -- 通过 状态标志 判断是否已连接

    class mysql
    {
        // 链接状态
        private static $status = null;

        private function __construct()
        {
            echo '成功连接数据库... <br>';
        }

        public static function getConnect()
        {
            // 如果$status 是 null, 证明未连接, 则 new self
            // 如果$status 不是 null, 证明已连接, 则直接返回 状态
            if( is_null(self::$status) ){
                self::$status = new self;
            }
            return self::$status;
        }
    }



    // $a = new mysql;  // Fatal error: Uncaught Error: Call to private mysql::__construct()
    // $a = new mysql;
    // $a = new mysql;

    $a = mysql::getConnect();
    $b = mysql::getConnect();

    echo '<hr>';
    if($a == $b){
        echo 'yes';
    }else{
        echo 'no';
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值