【发布时间】:2012-04-16 07:21:19
【问题描述】:
在我的项目中获得良好的文件夹结构时遇到了一些麻烦,我想知道我可以使用哪些其他方式来构建我的文件。
我目前在 MVC 结构化文件夹中工作。
www/
Controllers/
Models/
Views/
到目前为止没有什么特别的。但我也在使用 ORM 系统。有了它,我可以轻松地从我的数据库中获取一个“对象”,例如:
ORM::load('table');
现在这种代码应该驻留在模型中,对吧?所以我会得到这样的东西:
<?php
class userModel
{
public function getAllUsers ( )
{
return ORM::load('table');
}
public function getUserById ( $id )
{
return ORM::load('table', 'userid=?', array($id));
}
}
?>
在我看来到目前为止看起来不错...但还有一件事。我还可以在使用 ORM 系统时指定一个“模型”。有了这个模型,我基本上可以设置验证规则。像这样:
ORM::withModel('authModel');
这让 ORM 知道,在向数据库添加新行(或更新现有行)之前,它应该首先检查以下模型的验证规则。
<?php
class authModel //Or maybe authValidation??
{
// Method gets automatically triggered when an update is done with the ORM
public function onUpdate ( $obj )
{
if ( $obj->username == '' )
throw new \Exception('No username');
}
public function onInsert ( $obj )
{
// Validations here too.
}
}
?>
现在的问题是,我有两种模型。我基本上使用 getter/setter 来获取数据并将数据存储到数据库(从我的控制器到我的模型)。
我还有另一个模型,其中设置了验证规则...我不想将两者混合在同一个文件夹中。所以我必须为此想出另一种结构。比如:
www/
Controllers/
Models/
Repositories/
Entities/
Views/
只是我的模型不是真正的“存储库”,因为它没有在 repo 类中存储任何对象,也没有 commit() 方法或类似的东西。
我也无法将第二个模型(用于验证)存储在实体文件夹中,因为它们根本不是实体...
知道我应该如何构建这个..??
【问题讨论】:
-
你为什么不用像 Kohana 这样的 ORM 准备好去农场?
-
@webbandit 因为我正在创建自己的“框架”以获得更多经验。我知道我可以轻松使用其他框架。但我也想通过自己的方式学习。
标签: php model-view-controller directory-structure