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.
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);
Utilisez :
$pageInstance = new Page(); $pageInstance->getInstanceByName($page);
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 } }
Cela vous permet d'appeler la méthode directement en utilisant le nom de la classe :
Page::getInstanceByName($page);
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!