postanowiłem nauczyć się w końcu programowania obiektowego w php i zacząłem pisać klasę, której zadaniem będzie generowanie formularza. Natknąłem się jednak na problem z dodawaniem pól.
Moje założenie jest takie, że po utworzeniu pola za pomocą klasy formInput, dodaje je do "ciała formularza" metodą registerField i na końcu wyświetlam całość. Niestety w tym momencie nie potrafię sobie z tym poradzić bez serializacji obiektu.
<?php class Form //klasa tworzy zaczniki <form></form> oraz dodaje pola do formularza { public $formAction; //zmienna ACTION formularza public $formMethod; //metoda wysyłania danych z formularza function __construct($action,$method){ $this->formAction=$action; $this->formMethod=$method; } function regisetrField($pole){ //dodaje pole do tablicy $formFields $this->formFields[] = $pole; } function createForm(){ //tworzy kod formularza; for ($i=0; $i<$ile;$i++){ echo '<input type="'.$tab[$i]->inputType.'" name="'.$tab[$i]->inputName.'" value="'.$tab[$i]->inputValue.'" />'; } } } class formInput //tworzenie pola input dla formularza { public $inputName; public $inputType; public $inputValue; function __construct($name,$type,$value){ $this->inputName = $name; $this->inputType = $type; $this->inputValue = $value; } function __set($name, $value){ $this->name = $value; } function __get($name){ return $this->name; } } ?>
<?php $form = new Form('obsluga.php', 'POST'); $t1 = new formInput('pole1', 'text','Jakaś wartość '); $t2 = new formInput('pole2', 'text','Jakaś wartość 2 '); $form->createForm(); ?>
Całość niby działa tak, jak chcę jednak ta serializacja każdego pola nie daje mi spokoju.
Moje pytanie sprowadza się do tego w jaki sposób przeprogramować te klasy aby serializacjia nie była konieczna? Może powinienem cały kod zamknąć w jednej klasie? Proszę o naprowadzenie mnie na właściwą drogę lub chociaż podanie jakiegoś słowa kluczowego, bo już sam nie wiem czego powinienem szukać.
Dziękuje za uwagę i Pozdrawiam.