PHP crud抽象方法

时间:2012-06-16 19:07:47

标签: php crud layer abstraction

这是我在这里建立好几年后的第一个问题。 我正在重新编写我的一项工作,试图使用更深层次的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

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

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

1 个答案:

答案 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'));