Lorsque vous utilisez le modèle de mappeur, quelle est la meilleure pratique pour définir des classes pour de nombreuses relations.PHP Mapper Pattern, plusieurs à plusieurs relations
Par exemple, disons que nous avons des tables pour les produits et les catégories et Product_Categories
Voici quelques squelettes de base pour les produits et catégories. Chacun a une classe d'objets et chacun a un Mappeur.
Produit Objet & Produit Mapper:
class Product
{
public $product_id;
public $name;
public function __construct($product_id = false, $name = false)
{
$this->product_id = $product_id;
$this->name = $name;
}
}
class Product_Mapper
{
private $_db;
public function __construct($_db) {}
public function getProducts() {}
public function getProductById($product_id) {}
public function insert(Product $product) {}
public function save(Product $product) {}
public function update(Product $product) {}
public function delete(Product $product) {}
}
Catégorie Objet et Catégorie Mapper
class Category
{
public $category_id;
public $name;
public function __construct($category_id = false, $name = false)
{
$this->category_id = $category_id;
$this->name = $name;
}
}
class Category_Mapper
{
private $_db;
public function __construct($_db) {}
public function getCategories() {}
public function getCategoryById($product_id) {}
public function insert(Category $category) {}
public function save(Category $category) {}
public function update(Category $category) {}
public function delete(Category $category) {}
}
Ce qui manque ici est la possibilité d'ajouter des produits à des catégories et mise à jour/supprimer/select produits des catégories, etc.
Serait-ce aller contre ce modèle, pour créer une méthode dans Product_Mapper
appelée addCategory
, deleteCategory
, getProductsByCategoryId
ou voulez-vous créer un nouvel objet avec mapper appelé Product_Categories
qui gérerait ces fonctions?
Vraiment apprécier vos commentaires. Je pouvais voir que l'une ou l'autre méthode était appropriée, mais sans créer une nouvelle classe, je pouvais aussi voir la classe de produits devenir gonflée au fur et à mesure que de nouvelles relations se construisaient.