2009-11-27 8 views
10

J'ai ce codeVérifiez si la fonction PHP retourne null ou rien

$return = $ep->$method($params); 
if ($return === null) { 
    throw new Exception('Endpoint has no return value'); 
} 
return $return; 

Est-il possible de faire la distinction entre une méthode qui retourne null et une méthode qui ne retourne rien?

+0

Est-ce ne fonctionne pas si '(retour $ === "") {}'? – KeepMove

Répondre

29

Ce n'est pas possible. Lorsqu'aucune valeur de retour n'est définie, la fonction renvoie automatiquement la valeur null.

+3

Rien n'est impossible :) – Pasta

+31

Désolé, la réponse correcte est. Oui, vous pouvez modifier et recompiler le code source PHP. : P – William

0

Vous pourriez faire en sorte que la fonction renvoie une autre valeur? Boolean true éventuellement, et vérifiez pour cela ou null.

+0

Je ne vais pas toujours être celui qui écrit les fonctions qui sont appelées –

1

Si la fonction ne renvoie rien, alors vous ne devriez pas tester sa valeur de retour. Vous devriez savoir quelles fonctions sont censées retourner quelque chose ou rien du tout - même si vous n'êtes pas celui qui les a écrites.

+1

Normalement, oui, mais dans ce cas, la fonction est recherchée dynamiquement. –

+0

Eh bien, à la lumière des autres réponses et des informations fournies, la seule solution que je prévois est l'analyse de PHP son propre code et la recherche du mot-clé "retour" dans la déclaration de la fonction. – Rolf

0

Grâce à la fonction de déclaration de type de retour de PHP7 ’:

function a(): void { 
    return null; // :(
} 

function b(): void { 
    // :) 
} 

function c(): void { 
    return; // :) 
}