[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: PHP класс для рисования HTML форм
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
Игорь_Vasinsky
это вложенные объекты, по суте удобная вещь, ни какой связки с родителем нету - тот просто возвращает ссылку на объект - вот и всё)

и вместо

$form->setTextarea('message');
$form->->setAttr('cols|30');

я пишу

$form->setTextarea('message')
->
setAttr('cols|30');


или

$form->setTextarea('message')->setAttr('cols|30');


_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
redreem
Игорь_Vasinsky

интересно как ты собираешься запоминать, какие методы имеют return $this; а какие нет?

вот почему метод checkProperty не возвращает this?

или addInput не возвращает, а вот addSelect возвращает?

я понимаю что "черновичек", я лишь привожу пример, что системы с таким подходом заставляют дополнительно запоминать, где есть this, а где нет. и поэтому это зло!
Игорь_Vasinsky
Цитата
интересно как ты собираешься запоминать, какие методы имеют return $this; а какие нет?

я только для публичных сделал - когда что то ставлю в тег

Цитата
вот почему метод checkProperty не возвращает this?

он private - с ним в коде не играешь

Цитата
или addInput не возвращает, а вот addSelect возвращает?

можно у всех addElem убрать -0 они по сути завершающий этап формирования тега

да, хочу причесать и валидатор. мне кажется удобно должно быть

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Invis1ble
Про фабрику уже сказали, я вставлю свои 5 копеек:
вместо private лучше делать protected, иначе как наследоваться от класса?
названия констант общепринято писать в верхнем регистре

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

redreem
Цитата
он private - с ним в коде не играешь


т.е. подход такой: я для паблика пишу, а для привата, где так же можно использовать внутриклассовые наборы вида a->b->c-> - не пишу? а смысл такого разделения?

Цитата
можно у всех addElem убрать -0 они по сути завершающий этап формирования тега

я еще соглашусь с принципом: "если метод не призван возвращать какие-то данные, то возвращаем $this"

exotica
вернусь ка я пожалуй в свою песочницу, пусть большие дяди без меня обсуждения ведут laugh.gif
с горестью постановляю что я пока не представляю зачем этот класс sad.gif

_____________
[FAQ]Регистрации пользователей, сохранение в БД
---------------------------------------------------------------------------
Выходя из ванной, вышел из нее два раза
Игорь_Vasinsky
biggrin.gif

Цитата
т.е. подход такой: я для паблика пишу, а для привата, где так же можно использовать внутриклассовые наборы вида a->b->c-> - не пишу? а смысл такого разделения?

зачем, хочешь и внутри класса используешь) писать чуток меньше просто)

Цитата
я еще соглашусь с принципом: "если метод не призван возвращать какие-то данные, то возвращаем $this"


ежу понятно, не массив же вовзращать и того и того))

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
redreem
Цитата
ежу понятно, не массив же вовзращать и того и того


я имел ввиду, что при флюид подходе это единственный здравый критерий smile.gif
либо так на 100% либо вообще ни как smile.gif
Oyeme
Для начало Я бы Вам посоветовал что бы Вы придерживались одному стилю программированию.

Вы где то приписываете префикс 'set' где то нет,где то сокращаете название метода,а где то нет.
Так же это относиться к константам. wink.gif

Комментарии к методам в ужасном стандарте. wink.gif


Такой класс очень сложно читать.
Стиль очень грязный.

По коду можно понять уровень программиста,его стиль,его отношение ко всему.

Видно что Вы запихали все в один класс.
Вы не разделяете логику,у Вас все в кучу.
Это дает понять что Вы не понимаете концепций ООП.

Таким же образом Вы бы могли создать процедуру и все туда запихать и возвращать ссылку.

Остальное как посоветовал в верном направлении Dezigo

Разделяйте логику.Нарисуйте на листики что Вы хотите от этого.
Посмотрите примеры как реализованы в frameworks.

Почитайте об шаблонах проектирование.
Они для этого и придуманы wink.gif
Игорь_Vasinsky
мы это уже проходили.
практики нет.

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Guest
Dezigo а я бы вообще сделал так


$form = new HTMLForm;

$form->setMetadata(array(
'form' => array(
'autocomplete' => 'on',
'enctype' => 'multipart/form-data',
'method' => 'POST',
'name' => 'form1',
),

'fields' => array(
'attach' => array(
'type' => 'file'
),
'name' => array(
'type' => 'text',
'placeholder' => 'Введите логин',
),

'email' => array(
'type' => 'text',
),

'sex' => array(
'type' => 'radio',
'items' => array(
'female' => 'Второй',
'male' => 'Первый'
)
),

'answer' => array(
'type' => 'checkbox',
'items' => array(
'female' => 'Второй',
'male' => 'Первый'
),
),

'myselect' => array(
'type' => 'select',
'id' => 'myid',
'items' => array(
'female' => 'Второй',
'male' => 'Первый'
),
),

'message' => array(
'type' => 'textarea',
'cols' => '30',
'rows' => '5',
'text' => 'Next message here'
)
),
));


echo $form;


Игорь_Vasinsky я так и знал что ваши навыки не ахти... ваш код тому подтверждение.
Быстрый ответ:

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