czyli "mowisz" ze formularz tez powinien byc w klasie?? - nie
a walidacja w innej?? - tak
<?php
class textInputComponent implements ioptComponent
{
protected $message = NULL;
protected
$tagParameters = array(); protected $tpl;
public function __construct()
{
$this -> message = NULL;
} // end __construct();
public function setOptInstance(optClass $tpl)
{
$this -> tpl = $tpl;
} // end setOptInstance();
public function set($name, $value)
{
switch($name)
{
case 'message':
$this -> message = $value;
break;
default:
$this -> tagParameters[$name] = $value;
}
} // end set();
public function push($value, $desc, $selected = false)
{
$this -> set($value, $desc);
} // end push();
public function setDatasource(&$source)
{
{
if(isset($source['name'])) {
$this -> tagParameters['name'] = $source['name'];
}
if(isset($source['value'])) {
$this -> tagParameters['value'] = $source['value'];
}
if(isset($source['message'])) {
$this -> message = $source['message'];
}
}
} // end setDatasource();
public function begin()
{
return '<input type="text"'.generateTagElementList($this->tagParameters).' />';
} // end begin();
public function onmessage($pass_to)
{
if($this -> message == NULL)
{
return 0;
}
$this -> tpl -> vars[$pass_to] = $this -> message;
return 1;
} // end onmessage();
{
return '';
} // end end();
}
?>
Ten kod pochodzi z OpenPowerTemplate - plik opt.components.php
input type="text" - jest klasą
input type="select" - jest kolejną klasą
itd. czyli każdy "input" to osobna klasa
a Twoja klasa mogaby się nazywać "Zend_Filter_Input" (zaglądnij do Zend-a). Za pomocą tej klasy możesz sprawdzić czy podany przez użytkownika email to faktycznie email, jeśli pytasz o wiek to czy to co podal użytkownik to napewno jest "int", czy nick ma minimum np. 5 znaków itd.
Czyli wszystko osobno - każdy input = osobna klasa a walidacja w innej.
Gdybyś swój formularz wstawil do do tej swojej klasy to miabyś klasę do obsugi tego konkretnego formularza a do kolejnego musiabyś stworzyć kolejną taką samą klasę która różnilaby się tylko ilością :
input type="?
" name="?
"czyli jeśli w serwisie masz 10 formularzy musisz stworzyć 10 niemalże identycznych klas a tak masz zestaw konkretnych klas (elementów formularzy) i walidację w osobnej i czy w serwisie "XXX" czy "YYY" czy "ZZZ' ciągle korzystasz z tych samych klas nie musząc ciągle tworzyć nowych.