Я недавно начал работать над классом форм PHP/JS, который также будет включать в себя построитель форм SQL (например, создание простых форм из sql и автоматических вставок/обновлений).PHP/JS Form Class - Array vs OO
Я пробовал несколько классов (zend_form, clonefish, PHP Form Builder Class, phorms и т. Д.), Но пока не встретил полного, простого, настраиваемого и полного решения (как на стороне сервера, так и на стороне клиента, все простые элементы html и множество элементов dhtml: сортировка, wysiwyg, загрузка mutli-файлов, выбор даты, проверка ajax и т. д.)
Вопрос: почему некоторые «классы» реализуют элементы через массив и другие через собственный класс OO звонки.
например. Clonefish (популярный класс коммерческих PHP):
$config = Array(
'username' => Array(
'type' => 'inputText',
'displayname' => 'Username',
validation => Array(
Array(
'type' => 'string',
'minimum' => 5,
'maximum' => 15,
),
),
));
$clonefish = new clonefish('loginform', 'test.php', 'POST');
$clonefish->addElements($config, $_POST);
Тогда другие, например. Zend_Form
$form = new Zend_Form;
$username = new Zend_Form_Element_Text('username');
$username->addValidator(new Zend_Validate_Alnum());
$form->addElement($username);
Я понимаю, что Zend_Form можно передать элементы через массив аналогично clonefish, но почему это?
Есть ли польза? Кажется, что это усложняет ситуацию, особенно при использовании подходящей среды IDE, такой как Komodo.
Любые мысли будут оценены, так как я не хочу слишком сильно отставать от трека и понимаю, что было очень полезно использовать массивы для добавления элементов (хотя это не было бы большой задачей для добавления).
Приветствия
Вы очень дипломатично сказали, что я бы сказал: Zend Framework - это образец перестройки, и я не знаю, стоит ли имитировать их. http://en.wikipedia.org/wiki/Overengineering –
Спасибо за ваш ответ.Я согласен, что он «чувствует» (ну, «смотрит»), как меньше кодирование, но вам не нужно столько же знаний об API, поскольку опции «config» являются явными строками. например. в примере conlonefish 'type' => 'inputText'. Как я уже упоминал при использовании IDE, это делает его бесконечно более утомительным. Я полностью согласен с тем, что формы HTML4 безумно сложны (из-за количества вариаций и несогласованных элементов элементов обрабатываются, например, если флажок multi не выбран, никакая переменная не отправляется через POST), и, поскольку все упомянули zend, это слишком сложно. Но так ли это? Только для «UX»? – User123342234
@ Josh Isnt "UX" довольно важный момент? Даже если это «просто» для разработчика? У вас есть смысл знать строки конфигурации, но ИМО, зная их, требует еще меньше знаний о классах и их методах, чем о них. - на боковом уровне: я не думаю, что Zend_Form слишком сложный или перегруженный * за то, что он позволяет *. Я уверен, что кто-то может придумать конструктор форм, который проще в использовании и более подходит для * конкретной формы формы, но Zend_Form специально ориентирован на * любую * форму. – Gordon