PHP Mapper Pattern,多对多关系
使用映射器模式时,为多对多关系定义类的最佳实践是什么.
例如,假设我们有产品和类别以及Product_Categories的表格 以下是产品和类别的一些基本骨架.每个都有一个对象类,每个都有一个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) {} } 类别对象和类别映射器 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) {} } 这里缺少的是能够将产品添加到类别以及更新/删除/选择类别中的产品等. 是否会违反此模式,在Product_Mapper中创建一个名为addCategory,deleteCategory,getProductsByCategoryId的方法,或者您是否会使用名为Product_Categories的映射器创建一个新对象来处理这些函数? 真的很感激任何反馈.我可以看到任何一种方式都适合,但是没有创建新类,我也可以看到产品类在构建新关系时变得臃肿. 解决方法
关于这一点:
是的,不.它实际上与DataMapper无关. $oProduct->addCategory( $oCategory ); 然后,当您使用datamapper保存产品时,数据映射器将添加该产品与您添加到其中的类别之间的关系. $oProductMapper->save( $oProduct ); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |