У меня есть этот код
$return = $ep->$method($params); if ($return === null) { throw new Exception('Endpoint has no return value'); } return $return;
Есть ли способ отличить метод, который возвращает null, от метода, который ничего не возвращает?
null
Это невозможно. Если возвращаемое значение не установлено, функция автоматически возвращает ноль.
Если функция ничего не возвращает, вам не следует проверять ее возвращаемое значение. Вы должны знать, какие функции должны возвращать что-либо или вообще ничего - даже если вы не тот, кто их написал.
С функцией объявления типа возврата PHP7:
function a(): void { return null; // :( } function b(): void { // :) } function c(): void { return; // :) }
Вы могли бы заставить функцию возвращать другое значение? Возможно, это логическое значение true, и проверьте это или ноль.