我正在尝试找出在新的 Laravel 4 应用程序中构建控制器/模型的“最佳”方式。
显然,我想让控制器保持轻薄。所以我想使用 Repos/Services 来分离事物,但是我真的不知道如何在 Laravel 4 中实现它。Laravel 3 给了我们一些关于它应该如何工作的想法,但没有示例。
有没有人想出最巧妙的方法来做到这一点,或者有任何我可以看一看的示例代码?
我正在尝试找出在新的 Laravel 4 应用程序中构建控制器/模型的“最佳”方式。
显然,我想让控制器保持轻薄。所以我想使用 Repos/Services 来分离事物,但是我真的不知道如何在 Laravel 4 中实现它。Laravel 3 给了我们一些关于它应该如何工作的想法,但没有示例。
有没有人想出最巧妙的方法来做到这一点,或者有任何我可以看一看的示例代码?
我同意这样一个事实,即在 Laravel 4 中存储这些类的位置不是很清楚。
一个简单的解决方案是在您的主 app/ 文件夹中创建 repositories/services 文件夹并更新您的主 composer.json 文件以使其自动加载:
{
"require": {
"laravel/framework": "4.0.*"
},
"autoload": {
"classmap": [
"app/commands",
"app/controllers",
"app/models",
"app/database/migrations",
"app/tests/TestCase.php",
"app/repositories",
"app/services"
]
},
"minimum-stability": "dev"
}
注意:每次创建新类时,都必须运行composer dump-autoload
.
如果是存储库,你可以让 Laravel 自动将它们注入到你的控制器中。我发现这是一个很好的关于这个主题的截屏视频。
我发现这个教程集合很好地介绍了存储自定义服务提供程序和其他要注入项目的文件的适当位置:
这些教程来自这个集合:
当我全新安装 Laravel 时,我做的第一件事是:
因此,在这种情况下,您的命名空间将是 Application\Entities、Application\Repositories 和 Application\Services
在 composer.json 中:
{
"require": {
"laravel/framework": "4.0.*"
},
"autoload": {
"psr-0": {
"Application": "app/src/"
},
"classmap": [
"app/commands",
"app/controllers",
"app/database/migrations",
]
},
"minimum-stability": "dev"
}
对于其中的每一个,您都需要创建类和服务提供者以将存储库绑定到实体。
这是一个解释如何创建存储库的教程:
http://culttt.com/2013/07/08/creating-flexible-controllers-in-laravel-4-using-repositories/
无论如何,我仍在寻找最好的架构。如果有人有更好的主意,我会很高兴听到它!