Je voudrais créer une classe pour gérer des formulaires et qui pourrait être étendue assez facilement au niveau des types de champs gérés.
Je voudrais donc créer une classe principale et des classes supplémentaires par type de champ.
Par exemple :
class form{
}
class formInput{
function __construct($label=false,$name,$value=false){
}
}
class formButton{
function __construct($label,$name,$action){
}
}
Le but serait d'avoir une syntaxe spécifique par classe de champ, avec une méthode __tostring() qui affiche le code HTML correspondant.Je voudrais pouvoir appeler mes champs aussi bien indépendamment que depuis la classe form :
$truc=new formInput('champ de test','test',false);
ou
$truc=new form();
$truc->input('champ de test','test',false);
Comme je ne veux pas définir des méthodes pour chaque champ dans la classe form (qui créeraient des instances des autres classes), je me suis intéressé à la surcharge de méthodes (__call) pour modifier ma classe form de cette façon :
class form{
function __call($name,$arguments){
$field_type='form'.$name;
if(class_exists($field_type)) new $field_type($arguments);
}
}
Ce qui ne marche pas, parce que les arguments traités par __call sont renvoyés sous forme de tableau.Est-ce qu'il existe une fonction qui "transformerait" ce tableau d'arguments en n arguments que je pourrais passer à la classe appelée ?