2014-12-26 84 views
0

我有一個問題作出PDO連接訪問在擴展類,例如:不能訪問子類PDO連接

class Model { 

public $connection; 

public function __construct(PDO $connection = null) 
{ 
    global $config; 
    $this->connection = $connection; 
    if ($this->connection === null) { 
     $this->connection = new PDO(
     'mysql:host='.$config['db_host'].';dbname='.$config['db_name'], $config['db_username'], $config['db_password']); 
     $this->connection->setAttribute(
      PDO::ATTR_ERRMODE, 
      PDO::ERRMODE_EXCEPTION 
     ); 
    } 
} 

而另一擴展類模型

class User extends Model { 
    public function someFunction(){ 
     // how can I access the pdo connection in the parent constructer here? 
    } 
} 

這就是癥結我不想訪問在子類中的構造函數中創建的父連接的問題,非常感謝。

+3

這是錯誤的創建模型對象的連接,反正訪問父母的財產,你可以簡單地使用'$ this-> connection ...'在子節點 –

+2

由於'User extends Model',你可以訪問'$ this-> connection'。 –

回答

0

由於構造函數不是在PHP隱式調用,您需要添加至少某些行,事後只使用$this

class User extends Model { 

    public function __construct(PDO $connection = null) { 
     parent::__construct($connection); 
    } 

    public function someFunction(){ 
     // access the pdo connection in the parent here: 
     $this->connection->..... 

    } 
} 
+0

如果我不喜歡這個 靜態函數someFunction(){服用點// 訪問父這裏PDO連接: 的var_dump($這個 - >連接) } 它返回一個錯誤 使用$此當不在對象上下文中 –

+0

這是因爲我的函數someFunction被聲明爲static –