2011-11-23 2 views
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) 
    } 
+0

내가 볼 수없는 생성자에서 $_db 대신 $this->_db을 쓴 이유 생성자 공개해서는 안됩니다. 이것은 문제를 해결하지 못합니다. 어쨌든 고마워요 –

+0

어쨌든 var_dump ($ this -> _ db); 당신이 선택을 사용하고 당신이 얻는 것을보기 전에. –

+0

이미 있습니다. _db가 작동합니다. 나는 대답을 편집하여 덤프를 작성한다 –

답변

0

해결책 발견 ... 나는