Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP实现最佳类别和产品关系的最佳OOP方法是什么?_Php_Oop_Categories_Product - Fatal编程技术网

使用PHP实现最佳类别和产品关系的最佳OOP方法是什么?

使用PHP实现最佳类别和产品关系的最佳OOP方法是什么?,php,oop,categories,product,Php,Oop,Categories,Product,我正在尝试设计一个PHP项目的结构。我不太确定的是如何实现类别和产品关系。一个类别有一个父类别,并且可以有多个子类别。产品只属于一个类别。 Db表如下所示: 产品: 标识产品\名称类别\标识 类别 id类别\名称父项\ id 我为产品创建了一个类,为类别创建了一个类。但我不知道以面向对象的方式将它们联系起来的最佳方式是什么 我应该有更多像CategoryManager这样的类吗?如果是,它应该是什么样子 任何人都有很好的方法在代码级别实现关系,而不是在数据库级别 提前谢谢。在我看来,有Produ

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

产品: 标识产品\名称类别\标识

类别 id类别\名称父项\ id

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

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

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


提前谢谢。

在我看来,有
Product->getCategory()
Category->getProducts()
这样的方法就足够了。

在我看来,有
Product->getCategory()
Category->getProducts()
这样的方法就足够了。

我会这样做

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

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);
 }

}

我会这样做

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

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);
 }

}

这是我昨晚试图为我的论坛->主题关系做的事情。程序编程很容易。基本上,您试图实现的目标是:

程序化编程:

    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
       }
    }
        //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;
        } 
现在在OOP PHP中,如果使用框架,这将取决于框架,但一般来说:

    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
       }
    }
        //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,可以通过URL作为参数提供类别ID,基本上在框架中这将是小菜一碟,因为你已经设置了简单的路由。香草应该是一样的,但是看起来像这个网站/categories.php?categority=1这是我昨晚在论坛->主题关系中尝试做的事情。程序编程很容易。基本上,您试图实现的目标是:

程序化编程:

    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
       }
    }
        //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;
        } 
现在在OOP PHP中,如果使用框架,这将取决于框架,但一般来说:

    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
       }
    }
        //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,可以通过URL作为参数提供类别ID,基本上在框架中这将是小菜一碟,因为你已经设置了简单的路由。香草应该是一样的,但是看起来smt就像这个网站/categories.php?category=1