我想參考一個私有函式作為 Cache::remember 函式的第三個引數。
取而代之的是(洗掉了 try{}catch() 以獲得更簡潔的代碼):
class ApiController extends Controller
{
public function index(){
$data = Cache::remember('dataKey', 60, function () {
return Model::multipleMethodsHere()->get();
});
return response()->json($data,200);
}
}
我想這樣做:
class ApiController extends Controller
{
public function index(){
$data = Cache::remember('dataKey', 60, $this->getIndex());
return response()->json($data,200);
}
private function getIndex(){
return Model::....->get();
}
}
如果我嘗試參考私有函式,則會收到此錯誤。
Argument 3 passed to Illuminate\\Cache\\Repository::remember() must be an instance of Closure, instance of Illuminate\\Database\\Eloquent\\Collection given
是否可以 ?如果是,我該怎么辦?
uj5u.com熱心網友回復:
根據對 OP 的討論中的評論,重新制定策略Cache:remember使其成為getIndex功能的一部分,例如:
class ApiController extends Controller
{
public function index(){
$data = $this->getIndex();
return response()->json($data,200);
}
private function getIndex(string $dataKey = 'dataKey', int $time = 60){
return Cache::remember($dataKey, $time, function () {
return Model::....->get();
})
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/421478.html
標籤:
