如何在 Laravel 5 中使用缓存并保持代码干燥
How to Use Cache and Keep code DRY in Laravel 5
我有以下重复的代码行,不仅在控制器的许多方法中,而且在多个控制器中。
$Categories = \Cache::rememberForever('Categories', function() {
return \App\Models\Skill\Category_Model::all();
});
有什么有用的方法可以使用它,以便删除重复的代码吗?
使用存储库访问 Category_Model
模型:
//REPOSITORY CLASS
class CategoryRepository
{
public function getAll()
{
return \Cache::rememberForever('Categories', function() {
return \App\Models\Skill\Category_Model::all();
});
}
}
在需要获取类别的控制器中,从控制器的构造函数中注入存储库,并从方法访问存储库:
//INJECT THE REPOSITORY IN YOU CONTROLLER'S CONSTRUCTOR
public function __construct( CategoryRepository $catRepo )
{
$this->catRepo = $catRepo;
}
public function index()
{
//get the categories from the repository
$categories = $this->catRepo->getAll();
}
这将使您的代码 DRY,因为您只需调用 $this->catRepo->getAll();
即可获取所有类别
我有以下重复的代码行,不仅在控制器的许多方法中,而且在多个控制器中。
$Categories = \Cache::rememberForever('Categories', function() {
return \App\Models\Skill\Category_Model::all();
});
有什么有用的方法可以使用它,以便删除重复的代码吗?
使用存储库访问 Category_Model
模型:
//REPOSITORY CLASS
class CategoryRepository
{
public function getAll()
{
return \Cache::rememberForever('Categories', function() {
return \App\Models\Skill\Category_Model::all();
});
}
}
在需要获取类别的控制器中,从控制器的构造函数中注入存储库,并从方法访问存储库:
//INJECT THE REPOSITORY IN YOU CONTROLLER'S CONSTRUCTOR
public function __construct( CategoryRepository $catRepo )
{
$this->catRepo = $catRepo;
}
public function index()
{
//get the categories from the repository
$categories = $this->catRepo->getAll();
}
这将使您的代码 DRY,因为您只需调用 $this->catRepo->getAll();
即可获取所有类别