У меня есть Repository класса с методом следующим образом:Как передать аргумент в функции обратного вызова в php?
public function GetOne($id){
$method = __METHOD__;
$post = null;
$post = $this->CacheManager($method, function($id) {
return DB::select("select * from posts where id = ?", [$id]);
});
return $post;
}
Я хочу, чтобы кэшировать результат, но в функции закрытия/обратного вызова параметр идентификатора $ не работает. CacheManager - это признак, в котором я использую его в своем репозитории.
public function CacheManager($method, $fn) {
$obj = null;
if(!$this->HasCache($method)){
$obj = $fn();
}
else {
$obj = $this->GetCache($method);
}
return $obj;
}
У меня есть другие методы без параметров, и они работают по назначению.
Ну, вы никогда не прошло '$ id' в' CacheManager' ни делали вы передаете его '$ п();'. Вам также нужно передать аргументы. – Mjh