Показать сообщение отдельно
  #27 (permalink)  
Старый 17.07.2015, 20:33
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Сообщение от 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.'"';


Достаточно испугал? А я ведь тоже не программист, я - дизайнер, мое дело вообще-то - ФШ, Корел и Люстра. Представьте _ЧТО_ пишут настоящие программисты (а не лопухи с этого форума) и какой уровень абстракции они могут задать и какой уровень сервиса обеспечить и вам сразу перехочется самой что-то там изобретать.

Словом от такого вот запроса через массу объектов на сервере данные попадают в браузер в виде хтмл-формы и оттуда валятся данные в те же самые объекты которые их и проверяют согласно своим свойствам, методам, логике и полученным данным.

Это и называется - ООП.

Последний раз редактировалось kostyanet, 17.07.2015 в 21:25.
Ответить с цитированием