// pourquoi on les a mis dans un tableau?
public $infos = array();
public $fields = array();
Ces 2 variables sont en fait des variables d'instance de la classe Form. Cela signifie qu'elles sont propres à chaque objet Form créé (si on créé 2 Form avec $f = new Form(); $f2 = new Form();, $f et $f2 auront chacun des variables $infos et $fields indépendantes).
Le tableau $fields prend du sens car un formulaire est composé de un ou plusieurs champs. L'intérêt du tableau est de pouvoir en ajouter autant que nécessaire.
Le tableau $infos est une préférence personnelle, on aurait très bien pu écrire ceci à la place :
$this -> name = null;
$this -> method = null;
$this -> action = null;
$this -> enctype = null;
Ça rejoint le code ci-dessous :
// pourquoi on a fait $this->infos['champs'] = $champs et on n a pas fait la methode classique: $this->champs = $champs;
$this -> infos ['name'] = $name;
$this -> infos ['method'] = $method;
$this -> infos ['action'] = $action;
$this -> infos ['enctype'] = $enctype;
Qui aurait pu être écrit de la sorte si on avait pas utilisé le tableau $infos mais des variables de classe différentes pour chaque info :
$this -> name = $name;
$this -> method = $method;
$this -> action = $action;
$this -> enctype = $enctype;
Enfin, le code suivant permet d'ajouter un champ dans la liste des champs de notre instance Form. Pour faire simple, on ajoute des champs à notre formulaire. Dans la suite du code on parcourt ce tableau pour générer le formulaire (voir fonction render()).
// pourquoi on les a mis dans un tableau:
$this -> fields[] = array(
'type' => $type,
'name' => $name,
'value' => $value,
'size' => $size,
'maxlength' => $maxlength,
'checked' => $checked,
'class' => $class
);
Bon courage