使用PHP实现最佳Category和Products关系的最佳OOP方法是什么?

时间:2010-01-03 14:39:25

标签: php oop categories product

我正在尝试设计PHP项目的结构。我不太确定的是如何实现类别和产品的关系。一个类别有一个父类,可以有很多孩子。产品只属于一个类别。 Db表是这样的:

产品: id product_name category_id

类别 id category_name parent_id

我为产品创建了一个类,一个类的类。但我不知道以面向对象的方式将它们联系起来的最佳方式是什么。

我应该有更多像CategoryManager这样的类,如果是的话应该是什么样的?

任何人都有很好的方法来实现代码级别的关系,而不是在数据库级别。

提前致谢。

3 个答案:

答案 0 :(得分:3)

在我看来,使用Product->getCategory()Category->getProducts()等方法就足够了。

答案 1 :(得分:1)

我会这样做

产品可以有一个类别,但类别可以有产品。

class products 
{
  public $productname;
  public $price;

public function getProduct($id)
{
  return $this->db->fetch("select * from Products where id={$id}");
} 


}


class Category extends Products
{
  public $category;

  public function __construct()
 {
  parent::__construct();
 }

 public function getCategoryProduct($id)
 {
  $this->getProduct($id);
 }

}

答案 2 :(得分:0)

这是我昨晚为我的论坛试图做的事情 - >主题关系。程序编程很简单。基本上你想要实现的是:

程序设计:

    function get_categories
    {
       //1. Perform database query for categories
       $sql_categories = "SELECT * FROM categories ORDER BY category_id ASC";
       $res_categories = mysqli_query($conn, $sql_categories);
       //2. Return result
       return $res_categories_classic; 
    }

    function get_products
    {
       //3. Get the returned data from the categories query
       $res_categories = get_categories();
       while ($array_categories = mysqli_fetch_assoc($res_categories))
       {
            //4. Perform database query for products
            $sql_forums = "SELECT * FROM products WHERE product_id = {$array_categories["category_id"]}";
            $res_forums = mysqli_query($conn, $sql_forums);
            //5. Display returned data from products
       }
    }

现在在OOP PHP中,这将取决于框架,如果你使用一个,但一般来说:

        //1. Get all the Categories
        public function get_categories()
        {
           $this->db->select('*');
           $this->db->from('categories');
           $this->db->order_by('category_id', 'asc');
           $query = $this->db->get();
           return $query->result_array();
        {

        //2. Get all the related products
        public function get_products($category_id)
        {
           $products = $this->db->fetch("select * from Products where product_id={$category_id}");
           return $products;
        } 

通过点击类别的 href ,可以通过网址作为参数提供 Category_ID ,基本上一个框架,它将是一块蛋糕,因为你已经建立了简单的路由。香草会是一样的,但看起来像这个网站/ categories.php? category = 1