0
EDIT 23/11 : 솔루션이 생성되었습니다 ... $ _db 대신 $ this -> _ db를 생성자에 썼습니다! NOOB!
ZF 응용 프로그램에서 새 모델을 만들려고합니다.Zend Framework - non-object에서 select()
Fatal error: Call to a member function select() on a non-object in [...]/models/TrackingPageMapper.php on line 86
내가 ZF의 새로운 사용자 그리고 난 아무것도 잊지 생각 : 오류가 발생합니다. 여기
는 내 수업 코드 :/**
* TrackingPageMapper
* @author Raphaël Deschler - [email protected]
* @version 0.1
*/
class Default_Model_TrackingPageMapper
{
private $_db;
/**
* __construct
*/
public function __construct()
{
$_db = Zend_Db_Table::getDefaultAdapter();
}
#-----[Public Section]
/**
* addView()
* @param EtId, etablissement id
*
* Check :
* 1) If this is the first click of the day for this IP on this page
* 2) If this is the first click of the month for this IP
* 3) Save or not
*
* @return void
*
*/
public function addView($EtId)
{
$today = getDate();
$ip = $this->getRealIp();
//Check If is the IP exists
$this->ipExists($ip, $EtId);
//print_r($today);
}
#-----[Private Section]
/**
* getRealIp()
* @return varchar(15)
*
*/
private function getRealIp()
{
if (!empty($_SERVER['HTTP_CLIENT_IP']))
{
$ip = $_SERVER['HTTP_CLIENT_IP'];
}
elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
{
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
}
else
{
$ip = $_SERVER['REMOTE_ADDR'];
}
return $ip;
}
/**
* ipExists()
* @param Ip address
* @param EtId, etablissement id
*
* @return false if ip !exists
* @return array of ip infos if exists
*
*/
public function ipExists($Ip, $EtId = null)
{
$myQuery = $this->_db->select()
->from('tracking_ip', 'idtracking_ip')
->where('ip = ?',$Ip);
$result = $this->_db->fetchAll($myQuery);
print_r($result);
}
}
그리고 그런이 모델 호출
$oTrack = new Default_Model_TrackingPageMapper;
$oTrack->addView($Id);
누구든지 나를 도울 수 있습니까? 지원오고에 대한
감사합니다,
편집
var_dump($_db);
object(Zend_Db_Adapter_Pdo_Mysql)#76 (12) {
["_pdoType":protected]=>
string(5) "mysql"
["_numericDataTypes":protected]=>
array(16) {
[0]=>
int(0)
[1]=>
int(1)
[2]=>
int(2)
["INT"]=>
int(0)
["INTEGER"]=>
int(0)
["MEDIUMINT"]=>
int(0)
["SMALLINT"]=>
int(0)
["TINYINT"]=>
int(0)
["BIGINT"]=>
int(1)
["SERIAL"]=>
int(1)
["DEC"]=>
int(2)
["DECIMAL"]=>
int(2)
["DOUBLE"]=>
int(2)
["DOUBLE PRECISION"]=>
int(2)
["FIXED"]=>
int(2)
["FLOAT"]=>
int(2)
}
["_defaultStmtClass":protected]=>
string(21) "Zend_Db_Statement_Pdo"
["_config":protected]=>
array(7) {
["username"]=>
string(4) "riad"
["password"]=>
string(7) "xxxxxx"
["dbname"]=>
string(8) "riad_dev"
["charset"]=>
string(4) "utf8"
["driver_options"]=>
array(1) {
[1002]=>
string(14) "SET NAMES utf8"
}
["persistent"]=>
bool(false)
["options"]=>
array(3) {
["caseFolding"]=>
int(0)
["autoQuoteIdentifiers"]=>
bool(true)
["fetchMode"]=>
int(2)
}
}
["_fetchMode":protected]=>
int(2)
["_profiler":protected]=>
object(Zend_Db_Profiler)#74 (4) {
["_queryProfiles":protected]=>
array(0) {
}
["_enabled":protected]=>
bool(false)
["_filterElapsedSecs":protected]=>
NULL
["_filterTypes":protected]=>
NULL
}
["_defaultProfilerClass":protected]=>
string(16) "Zend_Db_Profiler"
["_connection":protected]=>
NULL
["_caseFolding":protected]=>
int(0)
["_autoQuoteIdentifiers":protected]=>
bool(true)
["_allowSerialization":protected]=>
bool(true)
["_autoReconnectOnUnserialize":protected]=>
bool(false)
}
내가 볼 수없는 생성자에서
$_db
대신$this->_db
을 쓴 이유 생성자 공개해서는 안됩니다. 이것은 문제를 해결하지 못합니다. 어쨌든 고마워요 –어쨌든 var_dump ($ this -> _ db); 당신이 선택을 사용하고 당신이 얻는 것을보기 전에. –
이미 있습니다. _db가 작동합니다. 나는 대답을 편집하여 덤프를 작성한다 –