La programmation orientée objet
Overloading
PHP5 introduit trois nouvelles méthodes réservées : __get(), __set() et __call().
Ces nouvelles méthodes permettent de gérer des appels à des méthodes ou propriétés non définies dans la classe.
Les méthodes réservées __get() et __set()
__get() et __set() sont utilisées pour les appels de propriétés.
__get() possède un paramètre qui est le nom de la propriétés demandées.
__set() possède deux paramètres qui sont le nom de la propriétés demandées ainsi que la valeur que l’on désire lui attribuer.
<?php // Définition d'une classe class uneClasse { public $propriete; public __get( $name ) { if( $name == 'text' ) { return $this->propriete; } else { return null; } } public __set( $name, $value ) { if( $name == 'text' ) return $this->text = $value; } } $obj = new uneClasse(); // Assignation d'une valeur à une propriété non définie $obj->text = 'Valeur'; // Récupération d'une valeur à une propriété non définie echo $obj->text; ?>
La méthode réservée __call()
__call() est utilisée pour les appels de méthodes.
__call() possède deux paramètres qui sont le nom de la méthode demandée ainsi qu’un tableau des paramètres passés lors de son appel.
<?php // Définition d'une classe class uneClasse { public $text; public __call( $name, $params ) { if( $name == 'substr' ) return substr($this->text, $params[0], $params[1]); else return false; } } $obj = new uneClasse(); $obj->text = 'valeur'; // Appel à une méthode non définie echo $obj->substr(0, 3); ?>