所以Laravel 5提出了一个新的文件夹结构,我试图找出管理我的自定义类的最佳方法(记住PhpSpec测试)
以前我做过类似的事情
使用新结构我应该尝试细分我的类以适应新的目录结构吗?例如,现在应用程序中有一个Http文件夹,我应该在该目录中添加相关的自定义类吗?
我知道这可能是个人偏好的问题,等等,但我一直在解决最佳实践方法是为了制定一个全新的L5项目。
任何建议表示赞赏。
经过一段时间的修修补补,我已经找到了适合我的方法(这是一个很小的应用程序。
我决定如果一个模型相当简单,我会把它留在app的根目录中,但是对于需要更广泛测试的更复杂的模型,我会使用存储库模式。
我只是将控制器保留在原始位置,但将它们细分为admin / public。我们也有可能为此构建一个小型API,我可能会将与API相关的所有内容放在app / Api中
答案 0 :(得分:2)
在这个阶段,L5仍在进行大规模的改变。没有最好的方法'还没怎么做,答案会随着时间的推移而改变,直到L5实际发布。
现实情况是,你可以通过多种不同方式做到这一点,一切都会好起来的。泰勒总是说要构建一个应用程序,以确定你想要它的行为 - 而不是因为别人告诉你这样做。
答案 1 :(得分:0)
Taylor Otwell在一篇博客文章中概述了Userscapes Snappy的结构: http://blog.userscape.com/post/organizing-snappy
虽然它基于Laravel 4.x,但它当然值得一读。
Laravel.io的源代码也有一个有趣的域分隔结构: https://github.com/LaravelIO/laravel.io
答案 2 :(得分:0)
您甚至不需要坚持放置控制器,视图或模型的标准方式,因为它们中的大多数只需要在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');
});
}
要更改模型的路径,您只需更改引用以在其他文件中使用正确的命名空间。例如,在这些文件中引用了用户模型:
配置/ auth.php
配置/ services.php
数据库/工厂/ ModelFactory
当然,您需要更改所有移动文件中的命名空间。