Vale, perfecto, precisamente el trozo de código que pusiste es justo lo que tenía en mente.
Tener una clase base Formulario (que sería abstracta) y luego cada formulario tener su propia clase que hereda de la clase base Formulario. y es en esa clase que hereda donde personalizar el formulario con sus campos y demás historias.
Lo que no entiendo es por qué tener el método Init y no hacerlo en el construct, tal que:
Código PHP:
class cForm {
public function __construct()
{
}
}
class MiFormulario extends cForm
{
public function __construct()
{
$this->addElement(new cText('blah'));
$this->addElement(new cTextarea('blah2'));
parent::__construct();
}
}
$form = new MiFormulario();
Total, que si he entendido bien la clase quedaría así:
Código PHP:
class cForm
{
private $Campos = array();
public function addCampo ($Campo)
{
$this->Campos[$Campo->GetNombre()] = $Campo;
}
public function DarValorCampo ($Campo, $Valor)
{
$this->Campos[$Campo]->SetValor = $Valor;
}
}
class cMiForm extends cForm
{
public function __construct ()
{
$this->addCampo(new cTextarea('MiTextarea'));
}
}
$MiForm = new cMiForm();
$MiForm->DarValorCampo('MiTextarea', 'Blablabla');