2010-05-13 41 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)。

​​