Maison >développement back-end >tutoriel php >Comment corriger l'erreur PHP « Normes strictes : la méthode non statique ne doit pas être appelée de manière statique » ?

Comment corriger l'erreur PHP « Normes strictes : la méthode non statique ne doit pas être appelée de manière statique » ?

DDD
DDDoriginal
2024-11-27 05:32:10929parcourir

How to Fix the

Résolution de l'erreur « Normes strictes : la méthode non statique ne doit pas être appelée de manière statique » en PHP

Le message d'erreur « Normes strictes : la méthode non statique ne doit pas être appelée de manière statique » appelé statiquement" se produit lorsqu'une méthode non statique est accédée à l'aide d'un appel statique. Pour résoudre cette erreur, nous modifierons le code pour garantir que toutes les méthodes sont déclarées comme statiques lorsqu'elles sont destinées à être appelées de manière statique.

Dans le code fourni, les méthodes de la classe Page ne sont pas déclarées comme statiques, mais ils sont appelés statiques. Pour résoudre ce problème, nous devons ajouter le mot-clé static aux déclarations de méthode.

Modifier Page.php

class Page{
    // ...
    public static function getInstanceByName($name=''){
        // ...
    }
    // ...
}

En rendant ces méthodes statiques, elles peuvent accessible en utilisant le nom de la classe, comme indiqué dans le fichier index.php :

// ...
if($page){ // load by name
    $r = Page::getInstanceByName($page);
    if($r && isset($r->id)) $id = $r->id;
}
// ...

Supplémentaire Notes

  • Les méthodes statiques et les modèles Singleton peuvent gêner les tests unitaires.
  • Les constructeurs doivent principalement se concentrer sur la définition de l'objet dans un état valide plutôt que sur l'exécution de requêtes approfondies.
  • Les constructeurs ne peuvent pas renvoyer de valeurs ; ils reviennent toujours nuls.

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!

Déclaration:
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