Pourquoi les méthodes de classes statiques abstraites ne sont-elles pas autorisées dans PHP 5.2 ?

DDD
Libérer: 2024-11-16 07:54:03
original
868 Les gens l'ont consulté

Why Are Abstract Static Class Methods Not Allowed in PHP 5.2 ?

En PHP 5.2, pourquoi les méthodes de classes statiques abstraites ne sont-elles pas autorisées ?

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.

Pourquoi les fonctions statiques abstraites ne devraient-elles pas exister ?

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.

La saga continue

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.

L'étrange cas du rapport de bug 53081

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.

Une résolution en PHP 7

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal