L'instance ReflectionMethod
de PHP (http://php.net/manual/en/class.reflectionmethod.php) a la méthode getDocComment
qui renvoie l'annotation d'une méthode. Cela fonctionne bien, sauf si vous utilisez un objet non sérialisé.PHP Doc commentaire après la désérialisation
$ref = new ReflectionClass('a');
var_dump(method_exists($ref, 'getDocComment')); //bool(true)
var_dump($ref->getDocComment()); //bool(false)
$ref = unserialize(serialize($ref));
var_dump(method_exists($ref, 'getDocComment')); //bool(true)
var_dump($ref->getDocComment()); //PHP Warning: Uncaught Error: Internal error: Failed to retrieve the reflection object
Est-il possible de tester si l'objet ReflectionMethod
a défini correctement commentaire doc? Je veux dire, je ne me soucie pas d'obtenir l'annotation après serialize/unserialize, mais je veux vérifier si l'appel getDocComment
est sûr.
Edit: D'après les réponses que le traitement des erreurs de conseils + fallback, je vais reformuler ma Q.
J'ai une cache simple des reflets (tableau de ReflectionMethod
objets). Jusqu'à ce que j'utilise un objet de cette cache, je me plains de vérifier son exactitude. Je ne veux pas gérer l'erreur, je veux "prédire l'erreur". Génial serait quelque chose comme hasDocComment
méthode qui ne génère pas d'erreur, mais renvoie uniquement vrai/faux dans un ReflectionMethod
état de l'objet.
Wont getDocComment retourner false il n'existe pas? – Erik
@Erik oui il va - voir la première partie du code – Jarda