8791 sujets

Développement web côté serveur, CMS

Bonjour tout le monde.

La programmation objet en PHP est quelque chose que je ne maîtrise pas très bien donc j'essaye de m'améliorer. J'aimerais ajouter une méthode ("createEl" reprise de la fonction JavaScript éponyme écrite par Julien Royer) à une classe native de PHP (DOMDocument) de la manière la plus transparente possible.

Dans l'idéal j'aimerais pouvoir faire :
$dom=new DOMDocument();
$dom->LoadHTML($this->out);
$el=$dom->createEl('span', 'some text content');

mais mes recherches infructueuses sur le net commencent à me faire penser que c'est impossible.
En fait ce que je cherche à faire c'est trouver l'équivalent en PHP de 'prototype' en JavaScript.

Merci d'avance à tous ceux qui se pencheront sur mon problème. Smiley smile
Modifié par Changaco (30 Jun 2008 - 13:03)
Je viens de trouver ( Smiley biggol ) une solution qui me convient et qui est toute simple :
class DOM extends DOMDocument {

  public function createEl($tag){
    $args=func_get_args();
    $el = parent::createElement($tag);
    for($i=1; $i<count($args); $i++) {
      $arg=$args[$i];
      if (is_string($arg)) {
        $el->appendChild(parent::createTextNode($arg));
      }
      elseif ($arg instanceof DOMElement) {
        $el->appendChild($arg);
      }
      elseif (is_array($arg)) {
        foreach($arg as $key => $value){
          $el->setAttribute($key, $value);
        }
      }
    }
    return $el;
  }

}


Édit : et l'appel :
$dom=new DOM(); <-- que ça à changer
$dom->LoadHTML($this->out);
$el=$dom->createEl('span', 'some text content');


La prochaine j'irai manger avant de poster et pas après. Smiley lol
Modifié par Changaco (30 Jun 2008 - 13:07)
Julien Royer a écrit :
Hello !

Pas mal comme question/réponse. Smiley smile
Ah oui t'as remarqué aussi ? Smiley rolleyes

Édit : je suis sûr que ça aidera quelqu'un d'autre un jour. Smiley smile
Modifié par Changaco (30 Jun 2008 - 14:23)