Il vous est peut-être déjà arrivé d’obtenir l’erreur PHP suivante en mode strict sous PHP 5.4 et versions ultérieures:
Redefining already defined constructor for class {nom_de_la_classe}
Cela arrive lorsque – dans le code d’une classe -, le code PHP4 précède le code PHP5 avec le constructeur de classe.
Le problème : une fonction PHP4 précédant le constructeur PHP5
Voici un petit exemple pour bien comprendre, avec une classe SkymindsExampleClass
, une fonction qui s’appelle SkymindsExampleClass()
et donc porte le même nom, et la fonction constructeur __construct()
.
L’exemple suivant produit l’erreur Redefining already defined constructor for class
parce que la fonction PHP4 SkymindsExampleClass()
se trouve avant la fonction PHP5 __construct()
:
<?php
// This example outputs a PHP error in strict mode
class SkymindsExampleClass {
//PHP4
function SkymindsExampleClass()
{
$this->__construct();
}
//PHP5
public function __construct()
{
$this->admin_page();
}
}
Code language: HTML, XML (xml)
La solution : placer le code PHP5 avant le code PHP4
Pour supprimer l’erreur PHP stricte, il suffit de placer la fonction PHP5 avant la fonction PHP4.
Cela nous donne donc :
<?php
// This example is valid in strict mode
class SkymindsExampleClass {
//PHP5
public function __construct()
{
$this->admin_page();
}
//PHP4
function SkymindsExampleClass()
{
$this->__construct();
}
}
Code language: HTML, XML (xml)
Il suffit simplement d’intervertir les deux fonctions pour corriger ces erreurs PHP. Le constructeur PHP5 a précédence sur le constructeur PHP4.
Vous voulez un site WordPress ou WooCommerce qui soit à la fois rapide et performant? Vous êtes au bon endroit.