Génération PHP.net » La programmation orientée objet

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);
?>

Pages: 1 2 3 4