Editer:
* Note: J'utilise PHP 5.2 pour le moment, malheureusement. Je ne peux pas trouver un hôte pas cher décent offrant 5,3 ...Comment créer une constante dans une sous-classe à utiliser dans une méthode trouvée dans une classe parent en PHP 5.2?
En PHP, self
fait référence à la classe dans laquelle la méthode appelée est définie. Cela signifie que si vous ne remplacez pas une méthode dans la classe enfant, le mot clé self
fera référence à la classe parente, même lorsqu'elle est appelée à partir de l'enfant.
Par exemple, ce code:
<?php
class ParentClass {
const NAME = "ParentClass";
public function showName() {
echo self::NAME . "<br />\n";
}
}
class ChildClass extends ParentClass {
const NAME = "ChildClass";
public function __construct() {
echo self::NAME . "<br />\n";
}
}
$test = new ChildClass();
$test->showName();
?>
créerons cette sortie:
ChildClass
ParentClass
Ce que je veux faire est de créer une méthode par défaut (par exemple showName()
dans l'exemple ci-dessus) qui existe dans une classe parent avec des constantes définissant les valeurs par défaut à utiliser. Chez l'enfant, je veux être en mesure de remplacer ces constantes (notez le const
dans la définition de l'enfant ci-dessus), et ont ces valeurs sont utilisées lorsque j'appelle la méthode sur une instance de l'enfant.
En bref, comment puis-je faire en sorte que la sortie de l'exemple ci-dessus serait ...
ChildClass
ChildClass
... sans avoir à dupliquer le code du parent chez l'enfant?
J'utilise ServerGrove et ils offrent l'hébergement 5.3 pour un prix raisonnable. – CaseySoftware
@CaseySoftware: Bookmarked, merci. Je vais devoir vérifier quelques critiques pour cela, etc. mais cela semble prometteur. J'ai prévu d'aller avec WebFaction, mais la différence de prix ne semble pas importante. WF fait 5.3, mais ils le font en exécutant un autre Apache sous votre compte, en mangeant de la RAM, etc. - pas nécessairement ce que je veux. – AgentConundrum