Я пытаюсь решить раздражающую проблему с проверкой кода PhpStorm, когда дело доходит до анонимной функции. Он не видит методы переданного объекта.PHPDoc и методы Анонимные функции
Нижеприведенный фрагмент кода опирается на метод Predis и метод конвейера.
startCacheClient()
инициализирует и возвращает экземпляр predis.
трубопровода()
проверяет, как должно, однако
$ труба набор() и $ на трубе> истекает()
Не удалось проверить и вернуть «Метод» Установить «Не найдено в» и «Метод» Истекает «Не Fou й в»
$this->i = 0;
$this->startCacheClient()->pipeline(function($pipe) use($values, $jsonEncode, $keepAlive){
foreach($values as $key => $currentValue){
if($jsonEncode) {
$currentValue = gzcompress(json_encode($currentValue), -1);
}
$pipe->set($key, $currentValue);
$pipe->expire($key, $keepAlive);
$this->i++;
}
});
Как я могу получить PhpStorm через PHPDoc, чтобы понять, что эти методы на самом деле есть и доступны. Код функционирует так, как ожидалось, но уведомление о проверке раздражает.
составляет $ конвейера экземпляра [\ Predis \ Pipeline \ Pipeline] (https: // GitHub .com/NRK/predis/блоб/v1.1/SRC/Трубопроводный/Pipeline.php)? – segFault
Если вам нужно фактическое решение PHPDoc: '/ ** @var \ Predis \ ClientContextInterface $ pipe * /' - поместите такую строку где-нибудь внутри анонимной функции (например, сразу после запуска тела функции - перед тем, как любой из код - перед выражением 'foreach' в исходном коде кода) - * должен * работать (но не на 100% уверен, хотя). – LazyOne