首页 > PHP单例模式疑惑

PHP单例模式疑惑

比如下边这个类,这个是我现在常用的代码:

<?php

class Instance{

    public static $_database;

    public static function Database($_collection=null){
        if(self::$_database === NULL){
            require 'Database.php';
            self::$_database = new Database;
        }
        if($_collection) return self::$_database->collection($_collection);
        else return self::$_database;
    }

}

?>

如果我执行下边的代码,那么到底是 new 了 Database 几次?到底有没有起到单例的作用?

$collection1 = Instance::Database('test1');
$collection2 = Instance::Database('test2');
$collection3 = Instance::Database('test3');

你在new的前面加个echo调试一下不就知道了?

如果你不愿意动手,那么答案是:只new了一次,之后调用的时候 if(self::$_database === NULL)就为false了,不会再执行到new


调用一次,就new了一次

【热门文章】
【热门文章】