Codé à l'origine sans avertissements stricts, un projet déclenche désormais de nombreux avertissements après les avoir activés. Parmi ceux-ci se trouve un avertissement concernant une fonction statique abstraite dans la classe parent abstraite Program. Selon la documentation, les fonctions statiques abstraites ont été involontairement autorisées dans PHP 5.0.x et 5.1.x et ne sont plus autorisées.
PHP 5.2 manquait de statique tardive liaisons, devenues disponibles dans PHP 5.3. Cette fonctionnalité permet aux méthodes de classe parent d'appeler les méthodes statiques de leurs classes enfants. Sans cela, les méthodes statiques abstraites de PHP 5.2 étaient inefficaces puisque les classes parents ne pouvaient pas appeler les méthodes statiques des classes enfants.
Lors de l'introduction de liaisons statiques tardives, les méthodes statiques abstraites ont retrouvé leur pertinence. . Malgré cela, l’avertissement persiste. Bien que l'on puisse affirmer que les méthodes statiques abstraites peuvent conduire à exposer des méthodes publiques défectueuses dans les classes abstraites, cet argument est considéré comme faible.
Rapport de bug PHP 53081 demandé la suppression de l’avertissement. Initialement rejeté comme faux, le rapport a ensuite été classé comme faux en raison d'un malentendu de la part de Rasmus Lerdorf, le créateur de PHP.
L'avertissement sera supprimé dans PHP 7 grâce au PHP RFC de Nikita Popov : Reclassify E_STRICT notices. Cette évolution vers la raison permettra aux développeurs d'utiliser des méthodes statiques abstraites sans rencontrer l'avertissement erroné rencontré dans PHP 5.2.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!