Maison > développement back-end > tutoriel php > Pourquoi l'appel statique d'une méthode non statique en PHP entraîne-t-il une erreur ?

Pourquoi l'appel statique d'une méthode non statique en PHP entraîne-t-il une erreur ?

Susan Sarandon
Libérer: 2024-11-24 11:42:11
original
924 Les gens l'ont consulté

Why Does Calling a Non-Static Method Statically in PHP Result in an Error?

Comprendre l'erreur de méthode statique d'appel de méthode statique

En PHP, l'extrait de code fourni rencontre le message d'erreur :

Strict standards: Non-static method
Page::getInstanceByName() should not
be called statically in
/var/www/webworks/index.php on line 12
Copier après la connexion

Cette erreur se produit lorsqu'une méthode non statique de la classe Page est appelée de manière statique, ce qui n'est pas le cas. autorisé.

Correction

Pour résoudre ce problème, la méthode getInstanceByName() de la classe Page doit être déclarée comme statique. Modifiez la ligne :

function getInstanceByName($name='')
Copier après la connexion

en :

public static function getInstanceByName($name='')
Copier après la connexion

En déclarant la méthode comme statique, vous pouvez l'appeler en utilisant le nom de la classe, comme :

$r = Page::getInstanceByName($page);
Copier après la connexion

Considérations supplémentaires

  • Méthodes statiques et Testabilité : Les méthodes statiques ne peuvent pas être simulées ou écrasées, ce qui peut rendre difficile le test du code qui en dépend. Envisagez plutôt d'utiliser l'injection de dépendances, où vous transmettez des données à l'objet via son constructeur ou ses méthodes.
  • Complexité du constructeur : Le constructeur de la classe Page fait trop de travail, comme interroger le base de données. Les constructeurs ne doivent être utilisés que pour initialiser l'état de l'objet, et non pour effectuer des opérations complexes.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal