PHP对象重叠

时间:2014-03-15 23:30:54

标签: php singleton instance

我的问题如下:

我有几个类,我实例化一个类,然后从另一个类访问一些方法来获取响应(返回对象), 然后从第一个类中返回一个返回true或false的方法,然后我print_r第一个对象,但它已被第二个对象使用的查询所获取的数据替换(覆盖)。请注意,第一个类使用第二个类中的相同方法返回自己的结果。什么事情发生了? 注意:DB类使用sigleton模式来实例化类并建立与数据库的连接,

private function __construct() {
    try {
        $this->_pdo = new PDO('mysql:host='. Config::get('mysql/host') . ';dbname=' . Config::get('mysql/db') , Config::get('mysql/username') , Config::get('mysql/password'));

    }   catch (PDOException $e){
            die($e->getMessage());
    }
}

代码如下:

    $user = new User();
$autos = DB::getInstance()->query("SELECT * FROM autos");

此方法使用DB中的方法,即“查询”方法

   if ($user->hasPermission('admin')) {
                                echo '<br><a href="administrador.php">admin panel</a>';

                        }
    print_r($autos)

当我print_r $ autos没有自动但对象的结果来自 $用户&GT;调用hasPermission( '管理员'), 的getInstance

public static function getInstance ( ) {
    if (!isset(self::$_instance)) {
        self::$_instance = new DB( );
    }
        return self::$_instance;
}
private static $_instance = null;
private $_pdo,
        $_query,
        $_error = false,
        $_results,
        $_count = 0;

0 个答案:

没有答案