这已经困扰了我很长一段时间,但现在我有必要找到答案。使用原则来抽象CRUD操作
我们正在研究使用CodeIgniter和Doctrine的相当大的项目。
我们的应用程序有一个前端,也是公司管理区域,用于检查/更改/删除数据。
当我们设计的前端,我们简单地消耗了大部分主义码的右侧控制器:
//In semi-pseudocode
function register()
{
$data = get_post_data();
if (count($data) && isValid($data))
{
$U = new User();
$U->fromArray($data);
$U->save();
$C = new Customer();
$C->fromArray($data);
$C->user_id = $U->id;
$C->save();
redirect_to_next_step();
}
}
显然,当我们去到做管理的意见代码重复开始,并考虑到我们是在一个“得到它完成“模式,所以它现在与代码膨胀臭。
我已经使用模型方法将许多功能(业务逻辑)转移到模型中,但基本的CRUD并不适合此处。
我打算尝试将CRUD放入静态方法,即Customer :: save($ array)[将执行插入和更新,具体取决于prikey是否存在于数组中],Customer :: delete($ id ),Customer :: getObj($ id = false)[如果为false,则获取所有数据]。尽管对于32个模型对象(并且在增长),这将变得很痛苦。
此外,有时模型需要进行交互(如用户数据和客户数据之间的上述交互),这不能在不破坏封装的静态方法中完成。我知道有一些地方需要3个“控制器”,我需要将这个CRUD封装在某个地方(显然),但是它们是静态方法,还是有另一条路?
您的建议非常感谢。
这很有道理。我认为我太想到了,模型必须以1:1的对象与表关系;需要在箱子外面多思考。谢谢。 – TomWilsonFL 2010-06-12 20:50:38