[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Метод в методе
wrun
Добрый день, у меня возникло желание по-изобретать велосипед, а именно класс для создания HTML форм

К примеру:
$form = new Form();
$form->Add('input','fio','Фамилия Имя Отчество');


Всё состряпал просто и в принципе мне нравится, а вот тег <select> не вписывается...

Думал сделать в стиле:
$form = new Form();
$form->Add('select','sex','Пол');
$form->Add->Option('Мужской');
$form->Add->Option('Женский');


И копить внутри массив Options до появления нового $form->Add('select',...
или до $form->Finish();

Но не пойму как сделать такую конструкцию $form->Add->Option()

Или подскажите как лучше подобное реализовать по вашему мнению?
nugle
В методе option вызывай метод add куда и добаляй option
wrun
Т.е. типа так:
$form = new Form();
$form->Add('select','sex','Пол');
$form->Add('option','Мужской');
$form->Add('option','Женский');


??? Вариант...
Michael
Метод Add('select','sex','Пол'); должен вернуть объект, в который опции эти складываться будут. Объект по ссылке в пхп передается.
можно будет писать:
Add('select','sex','Пол')->AddOption();

И AddOption() сделай чтобы возвращал этот объект. Можно будет писать так:

$form->Add('select','sex','Пол')->AddOption('...')->AddOption('...')->AddOption('...'); // ...


_____________
There never was a struggle in the soul of a good man that was not hard
wrun
Цитата (Michael @ 25.02.2013 - 19:48)
Метод Add('select','sex','Пол'); должен вернуть объект, в который опции эти складываться будут. Объект по ссылке в пхп передается.
можно будет писать:
Add('select','sex','Пол')->AddOption();

И AddOption() сделай чтобы возвращал этот объект. Можно будет писать так:

$form->Add('select','sex','Пол')->AddOption('...')->AddOption('...')->AddOption('...'); // ...

Можно небольшой пример кода? Не пойму как технически это сделать
Michael
class BasicForm {
private $selects = array();

public function addSelect($name){
$s = new BasicSelect($name);
$this->selects[] = $s;
return $s; // !!!!!!!!!!!!!!!!!!!
}
}


_____________
There never was a struggle in the soul of a good man that was not hard
wrun
Цитата (Michael @ 25.02.2013 - 19:56)
class BasicForm {
private $selects = array();

public function addSelect($name){
$s = new BasicSelect($name);
$this->selects[] = $s;
return $s; // !!!!!!!!!!!!!!!!!!!
}
}

Если не ошибаюсь то тогда это будет работать в таком стиле:

$elm = $form->Add('select','sex','Пол');
$elm->AddOption('...')




Хотя по другому ведь и быть не может, наверное я туплю...
Ведь конструкция:
$form->Add('select','sex','Пол')->AddOption('...'); 
$form->Add('select','sex','Пол')->AddOption('...');
$form->Add('select','sex','Пол')->AddOption('...');

явно нелепа

А вариант:
$form->Add('select','sex','Пол')->AddOption('...')->AddOption('...')->AddOption('...');


Не очень удобен для наполнения из цикла...

Походу вопрос снят...
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.