2014-01-06 133 views
0

我有這個類:PDO未定義功能

<?php 
    class LLPDO extends PDO{ 

     public function __construct($dsn, $user, $pass, $options = array()){ 
      $this->link = parent::__construct($dsn, $user, $pass, $options); 
      $this->link->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
     } 

     public function isConnected(){ 
      try { 
       $this->link->query('SELECT 1+1'); 
      } catch (PDOException $e) { 
       return false; 
      } 
      return true; 
     } 

    } 
?> 

但是,當我撥打電話,像這樣:

if(!$ibdb.isConnected()){ 
    $ibdb = new LLPDO(connectionString2($ini['ibdbn'], $ini['ibdbclient'], $ini['ibdbport']), $ini['ibdbusr'], $ini['ibdbpass'], array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); 
} 

我得到致命錯誤:調用未定義功能isConnected()。我打電話功能錯了嗎?或者我在類文件中做了不正確的事情? $ibdb創建提前在我運行它在腳本中較早

+1

它應該是'$ ibdb - > isConnected()'。 – moonwave99

+0

突然間我感到非常無聊。哎呀......感謝您的快速回復!仍在嘗試習慣PHP。 –

+1

我其實認爲php解析器應該會拋出一個更好的錯誤。 也許解析器假定您試圖連接!$ ibdb和isConnected()的返回值。 –

回答

3

方法被稱爲通過->操作:

if(!$ibdb->isConnected()){ 
    $ibdb = new LLPDO(connectionString2($ini['ibdbn'], $ini['ibdbclient'], $ini['ibdbport']), $ini['ibdbusr'], $ini['ibdbpass'], array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); 
} 
0
if(!$ibdb.isConnected()){ 

.?你應該使用箭頭(->)來訪問方法/屬性

if(!$ibdb->isConnected()){