我的问题如下:
我有几个类,我实例化一个类,然后从另一个类访问一些方法来获取响应(返回对象), 然后从第一个类中返回一个返回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;