В приведенном ниже коде IDE предупреждает меня о «Отсутствует заявление о возврате» в последней скобке. Который побуждает меня задавать здесь, если возвращение внутри try{}
в порядке или должно быть вне его.
Большое спасибо.
public function getFileNamesFromKeywords( array $ids, $format ) { try { if(self::$dbLink) { $ids = implode(',',$ids); $query = 'SELECT d.id, d.wfid, d.docid , k.keyword, k.value'. 'FROM keywords k'. 'INNER JOIN documents d '. 'ON k.document_id = d.id'. 'WHERE k.document_id IN ('.$ids.')'; $results = self::$dbLink->query($query); if( $results === false ) { throw new Exception('Ocurrió un error al consultar a la DB.', 500); } $results = $results->fetchAll(PDO::FETCH_ASSOC); $filenames = $this->buildFileNames( $results, $ids, $format ); } else { throw new Exception('No hay una conexión establecida con la DB.', 500); } return $filenames; } catch(Exception $e) { $this->error = 'Error al intentar conectar con la BD: ' . $e->getMessage(); } } //<----- Missing return statement
Если исключение выбрано и поймано, что функция вернется?
У вас должен быть оператор return в блоке catch или после блока try-catch. Недостаточно иметь оператор return в try-блоке.
если вы поместите оператор return внутри функции в любом месте, то ожидается, что функция должна что-то вернуть, и поскольку вы разместили оператор return внутри блока try-catch, когда среда ID оценивает код thw, он замечает, что вы не иметь оператор возврата, когда ваша попытка не удалась, что находится в catch.
Я бы рекомендовал создать переменную $ response, инициализированную значением false в верхней части функции, затем присвоить ей имена файлов, после того как блок try-catch вернет ответ $.
function getFilenames(){ $response = false; try{ //your code $response = $filenames; }catch{ } return $response; }
Поступая таким образом, вы гарантируете, что функция всегда возвращает что-то или результаты, которые вам нужны, или false.
Сообщение, которое вам дано, является лишь предупреждением, так как ваш код может ничего не возвращать. Лучший вариант сделать, как добавить возврат к вашему улову, если вы хотите остановить предупреждение.
Просто добавьте возврат перед закрывающей скобкой.
catch(Exception $e) { $this->error = 'Error al intentar conectar con la BD: ' . $e->getMessage(); return null; }