2014-01-06 106 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()){