这是我在这里建立好几年后的第一个问题。 我正在重新编写我的一项工作,试图使用更深层次的OOP方法,但我不知道我正在做的是“正确”。
我想要做的是简单的产品创建,但足够抽象,因此其他编码人员不必知道数据库使用什么,或如何有效的产品数据。只需简单的创建($ 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
我所理解的(如果我错了,请纠正我)我的代码中应该有足够的图层以使其更加干净和具体。但在某些情况下,我看不出足够的时间。
也许这是一个愚蠢的问题(当然!!)但我不知道我到底在做什么! 谢谢你!
答案 0 :(得分: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'));