У меня есть следующие строки кода, которые повторяются не только во многих методах контроллера, но и в нескольких контроллерах.
$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();
чтобы получить все категории
Других решений пока нет …