Silence “Déclaration ... doivent être compatibles” mises en garde en PHP 7

Après la mise à jour de PHP 7 les journaux presque étouffé sur ce genre d'erreurs:

PHP Warning: Declaration of Example::do($a, $b, $c) should be compatible with ParentOfExample::do($c = null) in Example.php on line 22548

Comment puis-je le silence de ces et seulement ces erreurs en PHP 7?

  • Avant de PHP 7, ils ont été E_STRICT type de mises en garde qui pourrait être facilement traitée avec des. Maintenant, ils sont tout simplement mises en garde. Depuis que j'ai ne voulez savoir sur les autres mises en garde, je ne peux pas tout simplement désactiver tous les avertissements au total.

  • Je n'ai pas la capacité mentale de réécrire ces anciens Api sans parler de tous les logiciels qui les utilise. Devinez quoi, personne ne va payer pour cela. Ni moi, de les développer, en premier lieu, donc je ne suis pas le seul pour le blâme. (Tests unitaires? Pas dans la mode il y a dix ans.)

  • Je voudrais éviter toute la ruse avec func_get_args et semblables autant que possible.

  • Pas vraiment, je veux passer à PHP 5.

  • J'ai encore envie de connaître d'autres erreurs et les avertissements.

Est-il propre et agréable façon d'accomplir cette?

  • Ceux-ci sont Warnings, pas Errors. Et vous ne devriez pas essayer de "silence", mais de résoudre le problème de la place. Le but de l'avertissement est pour vous dire que votre code sera exécuté dans les questions à l'avenir.
  • il faudrait des jours pour corriger approprié, par conséquent, cette question
  • Je suis plutôt de l'espoir, de cet héritage de l'API seront désarmés avant, il y aura des problèmes. Mais ce n'est pas qui va se passer pendant un an ou deux.
  • Je ne suis pas sûr que ces commentaires sont vraiment nécessaire ici. C'est vrai, dans un monde idéal, vous aurez tout le temps et l'argent heureusement corrigé du code legacy. Mais dans le monde réel, c'est souvent pas possible, ni même autorisé.
  • L'OP stipule clairement que c'est une sous-optimale situation actuellement pas beaucoup peut être fait à ce sujet. Je suis totalement d'accord qu'il peut être tout à fait irréaliste de réimplémenter et ainsi éventuellement refonte complète de l'ensemble de l'API, quand il y a actuellement "pas de problème" en plus d'un supplément de quelques messages de log (gestion de point de vue, évidemment). C'est une question légitime, pas besoin d'être si dure.
  • Je suis absolument d'accord et je n'ai jamais dit quoi que ce soit d'autre. Mais cela ne change pas le fait que la situation est ce qu'elle est et est causée par ce que j'ai dit.
  • Je sais, ce que j'essaie de dire, c'est que même si vous avez raison, ce n'est pas aider ici. 😉
  • Veuillez noter que j'ai écrit des commentaires, pas de réponse 🙂
  • Pour obtenir une réponse ici... un gestionnaire d'erreur personnalisé devrait vous permettre la liberté de supprimer sélectivement tout ce que vous voulez; mais il serait sans doute de ne pas être aussi beau une solution, juste un paramètre spécifique à la fonction error_reporting drapeau.
  • Pour ajouter un dernier commentaire, je dirais que, si le code n'est pas adapté pour php7 alors il ne devrait pas avoir à être exécuté dans un php7 de l'environnement. OMI code hérité inchangé qui appartient à l'environnement, il a été construit en.
  • assurez-vous que vous avez raison, il va rester en cours d'exécution en vertu de PHP5 dans production tandis que PHP5 est pris en charge et mis à jour; mais j'ai obtenu d'être préparé pour la fin de sa vie
  • Je veux juste ajouter que ce type de chose est un candidat de choix pour un renforcement de l'application en PHP 8. Je suggère que, quoi que vous fassiez, vous gardez cela à l'esprit.
  • pourriez-vous point dans une direction où l'on peut lire à propos de ces nouveaux exécution?
  • Il n'y a pas quelque chose de concret pour l'instant, mais si ce code utilisé des interfaces ou des classes abstraites dans l'héritage alors il serait déjà dur d'erreur. J'attends leur comportement pour être unifié dans une version future de PHP, éventuellement PHP 8.
  • Vraiment je tiens à contester cette hypothèse, quelque part. Parce que PHP d'ores et déjà défini explicitement les interfaces. Et il y a func_get_args() qui permettent couramment interfaces de toute façon.

InformationsquelleAutor sanmai | 2016-03-18