Software is like sex... It's better when it's free.

Blog - Tag 'generic'

Si vous voulez pousser le générique assez loin avec PHP et que vous en arrivez à vouloir accéder à des variables PHP sans connaitre leur nom, sachez que c'est possible assez simplement sans passer par des fonctions eval() ou autre code illisible.

En effet, la flexibilité de php permet de "générer" des noms de variables grâce aux caractères {} ; un petit exemple, supposons une classe représentant un modèle (ici une news), volontairement simplifiée.

<?php
class News
{
  private $news_title;
  private $news_description;

  public function __construct($_news_title,$news_description)
  {
    $this->news_title = $_news_title;
    $this->news_description = $news_description;
  }

  public function __get($name)
  {
    return $this->{$name};
  }
}
?>

Grâce au getter générique __get(), nous pouvons accéder à des variables de classe sans connaître leur nom. Imaginons, dans un autre fichier qu'une variable contienne la string décrivant la variable de classe, nous pouvons en récupérer la valeur d'une manière abstraite comme ceci :

<?php
include("News.class.php");
$news = new News("titre","contenu");
$generic = "news_title";
var_dump($news->__get($generic));
// Ce qui affichera "String(7) contenu";
?>
Tags:  abstractgenericphp.
Posté le Mardi 02 juin 2009 18:01:21 - 0 commentaire