最近我读完了一本OOP书,我决定用Laravel Framework创建一个项目。
在书中,作者建议根据类型划分类:DTO,BL和存储库。 Laravel让我有点困惑如何组织我的系统。
我一直在考虑做这样的事情:
文件结构:
app
BL
RegisterUser.php
Repositories
UserRepository.php
然后做例如:
// UserController
public function register($name, $email)
{
try {
$this->registerUser->fromWeb($name, $email);
}
catch(..) {
}
return View::make(....);
}
// RegisterUser
public function fromWeb($name, $email) {
if(...)
throw new Exception();
$this->userRepository->createUser($name, $email);
}
// userRepository
public function createUser($name, $email) {
// Insert to DB
}
我没有要求具体采取这一行动,我一般都会问这样做是否正确。
此外,我是否必须在模型中使用DTO?如果是这样,它应该如何适应?
答案 0 :(得分:1)
我不会说有任何正确的方法,但乍看之下,感觉就像是一层太多。
我相信模特会是你的DTO。如果你需要它们,它们将包括基本的访问者/变异者,否则Eloquent在处理其余的事情方面做得非常好。很多人也会使用模型进行验证,但这取决于您。有一个名为Ardent的惊人包装,如果这听起来像个好主意,它会让你的生活更轻松。对于一般的Laravel工作流程,我认为这很有意义。
每个人都不同,但我通常会发现自己倾向于更通用的服务层,我的存储库负责处理所有业务逻辑。简而言之,我使用它们来保持我的控制器尽可能轻。这如何转换为您所阅读的内容,它基本上将业务逻辑和存储库组合到存储库中。
然后,控制器将严格负责管理服务层(存储库)和视图之间的数据流。