我是L5的新手,在这里,stackoverflow。 我正在根据存储库模式制作博客服务。 现在我已经将一些Service类(如ImageService,PostService,CommentService ...)和Repositories作为数据访问对象。
从现在起,我将发表意见。首先,"首页"我想要。 需要注入2个服务类。 " ImageService(allUsersImages)"," PostService(allUsersPosts)"。
我在这里停下来......打扰最好的方式。 请告诉我,如果我的想法很好,或者有什么办法吗?
1.Creating Controller
class IndexController extends Controller
{
public function top(ImageRepository $image, PostRepository $post)
{
$images= $image->allUsersImages();
$posts= $post->allUsersPosts();
return view('/index')
->with('images', $images)
->with('posts', $posts);
}
public function mypage(ImageRepository $image,
PostRepository $post, $id)
{
$images= $image->allUsersImagesById($id);
$posts= $post->allUsersPosts($id);
return view('/index')
->with('images', $images)
->with('posts', $posts);
}
.
.
.
.
prepare methods for each page
}
2. Creating routing
Route::get('/top', 'IndexController@top');
Route::get('/mypage', 'IndexController@mypage');
.
.
.
答案 0 :(得分:0)
嗯我认为你已经做的事情也很不错。
class IndexController extends Controller
{
public function top(ImageRepository $image, PostRepository $post)
{ }
}
当你写这样的内容时,Laravel Dependancy Manager
会将ImageRepository
和PostRepository
注入function top() {}
现在你的问题是,有没有更好的方法呢?
<强> IMHO:强>
您无需要求依赖经理为您完成此项工作。
只需使用此功能中的ImageRepository
和PostRepository
即可。
class IndexController extends Controller
{
public function top()
{
$image_repository = new ImageRepository();
$post_repository = new PostRepository();
}
}
现在我所理解的是ImageRepository
和PostRepository
是你的DAL(Data Access Layer)
或者是ORM (Models)
的包装器,那么为什么要使用模型包装器,为什么不直接使用models,因为您没有在单页访问中共享存储库的方法。只需直接调用模型即可。这些是laravel中安全和常见的做法。