0

这是我在这里找到好的答案几年后的第一个问题。我正在重新编写我的一项工作,试图使用更深层次的 OOP 方法,但我不知道我所做的是否“正确”。

我想做的是一个简单的产品创建,但足够抽象,因此其他编码人员不必知道使用什么数据库,或者如何验证产品数据。就像简单的 create($attr) 方法一样。

这是代码的基本方案。

abstract class Crud_model_abstract {

 # private vars
 # getter for private vars
 # setter for private vars
 # some basic methods
}

class Product_model_crud extends Crud_model_abstract {

 # private vars
 # getter for private vars
 # setter for private vars
 # CRUD methods (using phpactiverecord.com lib)
}

然后是与 Product_model_crud 结构相同的类别、品牌等的一些类

现在我的问题是:我是否应该创建另一个构成实际产品的模型(将类别添加到它的表中,然后将品牌添加到它的表中......然后创建产品并存储它)然后从传递参数的控制器调用该模型,或者我应该将那个大模型(构成产品的模型)转换为控制器。

我相信我应该创建一个大模型,但目前我还不确定。我已经阅读了太多关于 OOP 良好实践的材料,但我对每一步都有疑问:D

我所理解的(如果我错了,请纠正我)我的代码中应该有足够的层以使其更加干净和具体。但在某些情况下,我看不出什么时候足够。

也许这是一个愚蠢的问题(当然!!)但我不知道我在做什么了!!谢谢!!

4

1 回答 1

0

只需使用一个模型插入产品。例如:

class Products extends abstractClass {

public function addProduct($params) {
 // Insert
}

public function getProduct($id) {
 // Get a product
}

public function editProduct($id, $params) {
 // Edit
}

}

您的抽象类将指定哪些方法需要包含在您的子类中。我认为你在考虑整个场景。

然后你会这样做:

$product = new Products();
$product->addProduct(array('id' => 5, 'name' => 'Dog toy'));
于 2012-06-16T20:12:22.627 回答