Héritage
Définition : Héritage
Pour définir l'héritage on utilise le mot clé extends.
class Mere
{
public $attr;
public function __construct($attr){
$this->attr = $attr;
}
public function meth(){
return $this->attr;
}
}
class Fille extends Mere
{
}
$element1 = new Fille(5);
$element2 = new Fille(10);
var_dump($element1); // attr = 5
var_dump($element2); // attr = 10
echo $element1->meth(); // affiche 5
Chaque instance de classe crée ses propres propriétés héritées de la classe mère.
Les instances ont accès aux méthodes de la classe mère.
Définition : Redéfinition de méthode : parent
On peut redéfinir une méthode parent dans la classe enfant.
Pour accéder à la méthode de la classe mère on utilise le mot clef parent.
class Mere
{
public function meth1(){
return 'meth1 de classe Mere';
}
}
class Fille extends Mere
{
public function meth1(){
return 'meth1 de classe Fille';
}
public function meth2(){
return parent::meth1();
}
}
$element = new Fille;
echo $element->meth1(); // affiche meth1 de classe Fille
echo $element->meth2(); // affiche meth1 de classe Mère
Le nombre de paramètres doit être le même dans la méthode fille et la méthode mère, sinon PHP signal une erreur Strict standards.
Définition : Attribut et méthode statique
On peut définir un attribut dont le contenu est partagé par toutes les instances d'une classe.
Cet attribut est dit attribut de classe. On peut accéder à cet attribut à l'aide d'une méthode de classe.
On définit les attributs et les méthodes de classe à l'aide du mot clef static.
Pour accéder aux propriétés de classe on utilise l'écriture :: à la place de ->.
Les propriétés n'appartenant pas à l'instance mais à la classe, on doit passer par l'écriture self plutôt que $this.
class Mere
{
public static $attr;
public static function setAttr($attr){
self::$attr = $attr;
}
public function getAttr(){
return self::$attr;
}
}
class Fille extends Mere
{
}
Mere::setAttr(10); // attr = 10 partagé par toutes les instances
$element = new Fille;
echo $element->getAttr(); // affiche 10
self : représente la classe à l'intérieur d'elle-même.
Mere : à l'extérieur de la classe, on l'appelle par son nom.
:: : permet d'accéder aux éléments statiques.
Définition : Méthode __construct
On peut redéfinir la méthode __construct de la classe mère et y faire appel.
class Mere
{
public $attr1;
public function __construct($attr1){
$this->attr1 = $attr1;
}
}
class Fille extends Mere
{
public $attr2;
public function __construct($attr1, $attr2){
parent::__construct($attr1);
$this->attr2 = $attr2;
}
}
$element = new Fille(10,5);
var_dump($element);
Le nombre de paramètres peut être différent.