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());
결과는 다음과 같습니다 # 1 (0) {}
왜 MysqlWorker을 수행
객체 (MysqlWorker) :: getInstance 개체가 비어 있습니까?
감사합니다. 내 문제였습니다. 하지만 코드에 오류가 있습니다. 우리는 자기가 아닌 정적 객체를 참조 할 수 없습니다. – Ockonal
이 수정되었습니다. Btw :'SET NAMES utf8'은 클라이언트 lib esp를 "혼동"시킬 수 있습니다. mysql_real_escape_string (DbSimple이 사용하는 경우). http://php.net/mysql_set_charset을 참조하십시오. – VolkerK