0
我使用DbSimple,但有一些代碼,我可以寫入另一個模塊。下面是它的代碼:單身人士和DbSimple
<?php
require_once 'config.php';
require_once 'DbSimple/Generic.php';
class MysqlWorker
{
private static $instance = NULL;
public function getInstance()
{
if(self::$instance == NULL)
{
self::$instance = new MysqlWorker();
}
return self::$instance;
}
private function __construct()
{
self::$instance = DbSimple_Generic::connect('mysql://'.MYSQL_USER.':'.MYSQL_PASS.'@'.MYSQL_HOST.'/'.MYSQL_DB.'');
self::$instance->setErrorHandler('mysqlErrorHandler');
self::$instance->query("SET NAMES 'utf8'");
}
private function mysqlErrorHandler($message, $info)
{
if (!error_reporting()) return;
echo "Database error: $message<br><pre>";
print_r($info);
echo "</pre>";
exit();
}
private function __clone() {}
}
?>
當我添加的代碼到類的構造函數:
var_dump(self::$instance);
我:
對象(DbSimple_Mysql)#2(17){...}
所以,一切都很清楚。 但是,當我使用代碼在另一個位置:
require_once 'modules/mysql_worker.php';
var_dump(MysqlWorker::getInstance());
結果是:
對象(MysqlWorker)#1(0){}
爲什麼MysqlWorker :: getInstance對象是空的?
謝謝,這是我的問題。但是你的代碼有錯誤。我們不能通過自我引用非靜態對象。 – Ockonal 2009-09-13 10:29:03
已修復。順便說一句:'SET NAMES utf8'可能會「混淆」客戶端lib esp。 mysql_real_escape_string(如果DbSimple使用它)。請參閱http://php.net/mysql_set_charset – VolkerK 2009-09-13 10:41:48