9
votes

Avertissements automatiques obsolètes pour les méthodes PHP avec annotation @deprétée

Quelles sont les possibilités d'implémenter l'aide qui soulevera un journal des erreurs avec le niveau e_depecated ( e_user_depecated en fait) lorsque la méthode de classe avec annotation @depecated est appelé?

Par exemple pour le code xxx

lorsque vous appelez la méthode $ obj-> Main () L'avertissement obsolète serait soulevé .

et oui, je sais que je pourrais ajouter un avertissement à l'aide de la ligne de code trigger_error () .


3 commentaires

Je n'ai pas compris l'utilisation des tiques dans PHP ( php.net/manual/fr/... ). Peut-être que c'est ce qui pourrait aider? Bien sûr, cela serait exécuté sur l'ordinateur de développement uniquement.


Avez-vous besoin de vérifier toujours les doctages de cette balise chaque fois que vous appelez la méthode ou que vous souhaitez analyser et ajouter le déclencheur une fois? Si c'est le premier, comme @KingCrunch a dit, vous serez foutu. L'analyse est une opération intensive de mémoire. Ce dernier pourrait être réalisable en fonction de si vous pouvez écrire ou trouver un analyseur pour le faire pour vous.


Oui, je comprends cela. Comme je l'ai dit, je souhaite l'utiliser sur la machine de développement que si la performance n'est pas si importante.


5 Réponses :


4
votes

En bref: mettre trigger_error () au début de la méthode.

Long: vous devez refléter la classe, récupérer le docommande, analyser et extraire le @depecated -tag. Le problème est que vous devez le faire sur chaque appel de méthode , et même s'il existe un moyen facile d'attraper chaque appel, ce serait une énorme surcharge.


3 commentaires

Il ne s'agit toujours pas de solution transparente ce que je cherche.


On dirait qu'il n'y a pas de réponse pour cela, donc je marquais cela comme la meilleure réponse.


Je sais que ce n'est pas si frais (comme par exemple en Java). Le problème est que PHP ne sait pas les annotations. Tout dans / ** * / sont des documents et certains outils sont capables de les analyser (puis de l'appeler "Annotation" ...). Son supplémentaire n'est pas possible de "voler" l'appel de la méthode (il y a un nom pour cela, je ne me souviens pas ...). Mais gardez-vous simplement à l'esprit: vous voulez supprimer la méthode plus tard de toute façon, une ligne de code supplémentaire ne blesse personne trop :)



-1
votes
  1. Peut être propre dossier Parser vous aide ...
  2. obsolète signifie que dans la version suivante, cette fonction sera supprimée du code ... Dans ce cas, vous n'avez pas besoin de penser à e_depecated

2 commentaires

2. n'a pas beaucoup de sens. e_dePratég et e_user_depecated devrait informer un utilisateur, que sera supprimé.


C'est très important qu'il se concentre dessus. 1) S'il est un utilisateur d'une bibliothèque, il veut être averti. 2) S'il est l'écrivain, il veut prévenir ses utilisateurs. L'amorce est une question suffisante importante pour qu'il /e / a besoin de se concentrer sur celui-ci sinon l'application est brisée dans une mise à niveau.de.



-1
votes

Addendum pourrait aider, il ajoute des annotations à PHP.


1 commentaires

Le problème ne lisait pas les annotations. Le problème est de déclencher l'erreur sur l'appel de la méthode obsolète.



1
votes

Si vous êtes toujours intéressé par une réponse:

$text .= "\n";
$file = fopen('log/deprecated', 'a+');
fputs($file, $text, strlen($text));
fclose($file);


0 commentaires

0
votes

Il y a une RFC pour cela, mais en discussion: # [Aperçu] Attribut . Si accepté, vous pourrez faire cela, par exemple:

Deprecated: Function explode() is deprecated, use split() instead


0 commentaires