Сообщение от ru_rikki
|
она не привязана к верстке в отличие от моей
|
Она конкретно привязана к верстке, потому что все данные берутся из нее, а ее делает сервер.
Вы просто терминологией не владеете. Это называется - уровень абстракции. В ваших дошираках он низкий - вы пишите конкретную функцию на каждое поле. А я показываю уровень повыше - когда данные нормализованы и одна и та же "функция" может проверить по ним любое поле. В кавычках потому что функций тоже много, просто над ними надстройка в виде еще одной извилины которая понимает какое поле и что с ним делать надо.
Вам это вообще зачем надо? Найдите программиста, расскажите что надо сделать и он вам за неделю все сделает. Блин, да готовое приспособит из своих сусеков.
Нормальное программирование всегда стремится к определению факта в одном месте и максимальному реюзу этих фактов в разных местах. Например вот самый короткий пример (чтобы не растягивать мессагу) объекта для поля пароля
<?php
class FormPassword extends FormField {
public function __construct($data=array()) {
$this->_d=array_merge(
array('cap'=>'Пароль',
'pattern'=>'^[\x20-\x7e]*$',
'errmsg'=>'вводите только печатные символы',
'required'=>3),$data);
$this->set_name();
}
protected function before_render(){
$this->_d=array_merge($this->_d,
array('title'=>'Показать пароль',
'onkeyup'=>'{this.title=this.value}',
'value'=>null));
}
public function prepare(&$link){
return $link->password($this->value);
}
}
В свою очередь FormField extends FormTag - ниже по иерархии, а все этой категории (формы) объекты входят в коллекцию объекта ActiveForm, который тоже там extends пару раз, в том числе от объекта таблицы бд, которая превращается в объект специальным скриптом и затем кастомизируется.
Зачем все эти навороты? Затем что в бд уже дофига чего определено, например там есть разница между текстовым и числовым отношением, есть разница между числовыми полями, даты, списки и тп. Повторять все эти сущности вручную в скрипте не имеет смысла, можно стянуть с бд и перевести на сущности веб-интерфейса.
Я процитирую только запрос, с результатов которого затем делается объект, затем кастомизируется в модели, в частности к полям добавляются нормальные названия, скажем вместо tel - Телефон, опции рендера, паттерны те самые и прочие опции.
$q='select `table_name`,`column_name`,`data_type` as `dtype`,
coalesce(`character_maximum_length`,`numeric_precision`) as `maxlength`,
`numeric_scale` as `decimals`,
`column_key`,
(`is_nullable`="NO" && `column_default` is NULL) as `required`,
`column_default` as `value`,
`column_type` as `data`
from `information_schema`.`columns`
where `table_schema`="'.$this->db_name.'"
and `table_name`="'.$table_name.'"';
Достаточно испугал? А я ведь тоже не программист, я - дизайнер, мое дело вообще-то - ФШ, Корел и Люстра. Представьте _ЧТО_ пишут настоящие программисты (а не лопухи с этого форума) и какой уровень абстракции они могут задать и какой уровень сервиса обеспечить и вам сразу перехочется самой что-то там изобретать.
Словом от такого вот запроса через массу объектов на сервере данные попадают в браузер в виде хтмл-формы и оттуда валятся данные в те же самые объекты которые их и проверяют согласно своим свойствам, методам, логике и полученным данным.
Это и называется - ООП.