Maison > développement back-end > tutoriel php > Comment corriger l'erreur PHP « Appel de méthode non statique de manière statique » ?

Comment corriger l'erreur PHP « Appel de méthode non statique de manière statique » ?

Susan Sarandon
Libérer: 2024-12-14 20:17:26
original
108 Les gens l'ont consulté

How to Fix the PHP

Erreur : appel de méthode non statique de manière statique

Lors de la tentative d'accès à une méthode non statique en tant que fonction statique, PHP génère le message d'erreur Normes strictes : Non- La méthode statique ne doit pas être appelée de manière statique. Ce problème survient souvent lorsqu'une méthode de classe est utilisée sans instancier au préalable un objet de la classe.

Solution :

1. Spécifiez l'objet de classe :
Pour résoudre ce problème, vous devez créer une instance de la classe avant d'essayer d'appeler ses méthodes. Par exemple, au lieu de :

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

Utilisez :

$pageInstance = new Page();
$pageInstance->getInstanceByName($page);
Copier après la connexion

2. Marquer la méthode comme statique :
Si vous avez l'intention d'appeler une méthode sans instancier la classe, vous pouvez définir la méthode comme statique au sein de la classe. Par exemple :

class Page {

    public static function getInstanceByName($name) {
        // method implementation
    }

}
Copier après la connexion

Cela vous permet d'appeler la méthode directement en utilisant le nom de la classe :

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

Considérations supplémentaires :

1. Testabilité :
Notez que les méthodes statiques et les singletons peuvent entraver la testabilité. Vous souhaiterez peut-être envisager des modèles de conception alternatifs pour améliorer les capacités de test.

2. Optimisation du constructeur :
Évitez de placer des tâches excessives dans le constructeur. Le constructeur ne doit gérer que la mise de l'objet dans un état valide. Pensez à injecter des dépendances de données plutôt que de les récupérer directement auprès du constructeur. N'oubliez pas que les constructeurs ne peuvent pas renvoyer de valeurs et renvoient toujours void.

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