2014-09-13 93 views
1

我正在使用MYSQL PDO進行MYSQL查詢,並且我在變量$ db中存儲了數據庫連接。 在類的方法中使用PDO查詢時,我必須在每個類中聲明$ db爲全局變量。 有沒有辦法我可以一次聲明它是全局的,它適用於所有方法? 以下是我在做什麼:如何爲一個類的所有方法聲明一個變量爲全局變量

<?php 
    class example { 
    method 1 { 
    global $db; 
    other statements 
    } 
    method 2 { 
    global $db; 
    other statements 
    } 
    } 
    ?> 

而下面的代碼也沒有奏效。

<?php 
    class example { 
    global $db; 
    method 1 { 
    statements 
    } 
    method 2 { 
    statements 
    } 
    } 
    ?> 

回答

2

我會建議做這樣

<?php 
class example { 
    protected $db; 

    public function __construct(name\space\DB $db) { 
    $this->db = $db; 
    } 

    public function method1() { 
    $this->db->query()... 
    } 

    public function method2() { 
    $this->db->query()... 
    } 
} 
?> 

薪火DB類與其他類,如這就是所謂的依賴注入。遵循這是一個常見而良好的慣例。如果你不確定它的含義,我強烈建議你閱讀它。

傳遞DB類後,我就可以把它註冊爲類實例的範圍內的屬性。然後,這個類中的所有方法都可用。

+0

是的,就是這樣,我正要寫下來。 :-) – 2014-09-13 09:52:23

+0

好的謝謝, 而我在方法2中實例化相同的類,我打電話方法1.是否有更好的方法來調用方法2中同一類的方法1? – 2014-09-13 09:54:51

+0

@BrainyPrb:$ this-> methodName()引用同一個類中的方法。當在一個類中$ this時,它指向類本身。您可以通過此範圍訪問所有屬性和mtehods。 – JimL 2014-09-13 09:56:19