因此,Laravel 5提供了一个新的文件夹结构,我正在努力找到管理我的自定义类的最佳方法(记住PhpSpec测试)。
以前我做过这样的事
使用新的结构,我是否应该尝试分割类以适应新的目录结构?现在应用程序中有一个Http文件夹,我应该在该目录中添加相关的自定义类吗?
- Controllers
- Middleware
- Providers
- Apes
- MyServiceProvider
- AppServiceProvider.php
我知道这可能是个人偏好的问题,等等,但我一直在思考如何设计一个新的L5项目的最佳实践方法时遇到了一些小麻烦。
任何建议都值得赞赏。
更新
经过一段时间的修补后,我决定了一种对我来说很好的方法(这是一个小应用程序。
- Middleware
- Requests
- Providers
- Repositories
- AbstractDbRepository.php
- ClientRepositoryInterface.php
- DbClientRepository.php
- DbScheduleRepository.php
- ScheduleRepositoryInterface.php
- Schedules
- Exceptions
- Schedule.php
- ScheduleCalculator.php
- ScheduleInputTransformer.php
- ScheduleTimes.php
- Traits
- SimpleModel.php
我决定,如果一个模型相当简单,我将把它放在app的根中,但是对于需要更广泛测试的更复杂的模型,我将使用存储库模式。
我只是把控制器放在原来的位置,但把它们细分为管理/公共。我们可能也会为此构建一个小API,我可能会将与API相关的所有内容都放在app/Api中。
发布于 2014-10-09 23:27:36
在这个阶段,L5仍在经历着巨大的变化。目前还没有最佳的方法来解决这个问题,在L5真正发布之前,答案会随着时间的推移而改变。
事实上,你可以采取多种不同的方法,一切都会好起来的。泰勒总是说,构建一个应用程序是为了你想要它的表现--而不是因为别人让你这么做。
发布于 2014-11-11 01:53:12
泰勒·奥特威尔在一篇博文中概述了用户替身的结构:http://blog.userscape.com/post/organizing-snappy
虽然它是基于Laravel4.x的,但肯定值得一读。
另外,Laravel.io的源代码有一个有趣的域分离结构:https://github.com/LaravelIO/laravel.io。
发布于 2015-09-09 16:35:47
您甚至不需要坚持放置控制器、视图或模型的标准方法,因为大多数控制器、视图或模型只需要在App文件夹中的一个文件中只需一行即可更改。我在文件中做了一个简单的搜索,查找我想要更改的目录的引用,很快就找到了以下内容:
在app/Providers/RouteServiceProvider.php中设置了默认控制器目录:
protected $namespace = 'App\Http\Controllers';在同一个文件中,您可以更改routes.php文件的路径:
public function map(Router $router)
{
$router->group(['namespace' => $this->namespace], function ($router) {
require app_path('Http/routes.php');
});
}要更改模型的路径,只需更改引用,以便在其他文件中使用正确的命名空间。例如,在这些文件中引用了用户模型:
config/auth.php
config/services.php
数据库/工厂/模型工厂
当然,您需要更改所有已移动文件中的命名空间。
https://stackoverflow.com/questions/26281749
复制相似问题