2010-05-13 44 views
1

這裏是我爲什麼要嵌套的示例類。php中的嵌套類

include("class.db.php"); 

class Cart { 

function getProducts() { 

//this is how i do it now. 
//enter code here`but i dont want to redeclare for every method in this class. 
//how can i declare it in one location to be able to use the same variable in every method? 
$db = new mysqlDB; 


$query = $db->query("select something from a table"); 
return $query 

} 

} 

回答

-1

你可能有這樣的事情

<?php 
    class cart 
    { 
      protected $database; 

      function __construct() 
      { 
       $this->database = new mysqlDB; 
      } 

      function getProducts() 
      { 
       $this->database->query("SELECT * FROM..."); 
      } 
    } 
?> 

__construct是當你實例化一個類被調用的函數。

+1

我會建議不要這樣做,因爲如果您已經在代碼的另一部分連接到數據庫,或者想要製作多個購物車,它會是一個問題。使用下面的答案,因爲它通過構造函數注入依賴項。 – 2010-05-14 17:10:07

0

將每個方法/函數的通用代碼隔離到另一個私有內部方法/函數中。

如果您需要在創建對象時自動運行一次,這是__construct的用途。

+0

是的,謝謝,明白了 – michael 2010-05-13 23:48:52

12

利用屬性。

class Cart { 

    private $db; 

    public function __construct($db) { 
     $this->$db = $db; 
    } 

    public function getProducts() { 
     $query = $this->db->query(. . .); 
     return $query; 
    } 

} 

您將在類的外部創建數據庫對象(鬆耦合FTW)。

​​