kostyl Лишний кусок кода, прослойка, которая будет сильно мешать. Помните - я на highload работаю, у меня вообще щас: [sql]SELECT fields, usr_id FROM enteties[/sql] и потом PHP: <?php $profiles->preFetch($user_ids); foreach ($user_ids as &$v) { // Сдесь соединяем данные и делаем прочие обработки } Оптимизация под MySQL NDB Cluster и key-value хранилища - API $profiles скрывает как именно и где хранятся данные по юзерам. Так что ActiveRecord и всякие ORM сразу лесом с ихними валидаторами. Mr.M.I.T. Потому что придётся писать их кучу - комменты для фоток, комменты для событий, комменты для блогов, комменты для видео, ...., комменты для N-ой хрени. Хотя комменты конечно можно сделать более-менее универсальные, но есть куча других смешанных вещей, разбиение которых в угоду правильной модели городит ООП"шность и скажется на производительности и потреблении памяти сильно. А вообще мысль такая, что к примеру есть те же комменты - в разных модулях это разные имена полей как минимум - уже нужно это как-то синхронизировать. К тому же как тогда делать комменты? В виде хелпера или модуля, который просто используем в нужном нам месте через $comments = Core::getInstance('comments') ? Опять же куча писанины. Хотите поразмять мозг над чем-то реальным? Можем организоватся, дам более подробную инфу, подумаете что можно сделать А мы с 440Hz берёмся сделать имплементацию в рабочем порядке (ибо в любом случае улучшать надо будет)
вот я сейчас как раз делаю модуль комментов. Надеюсь, что он будет универсален. Пока что это комменты для отелей (турсайт). Особенность комментов в этом проекте: то, что они должны сохранять дату отдыха+возможность загрузить фотки+оценить по нескольким параметрам отель. С этим я планирую српавиться при помощи event'ов. Ну посмотрим. Просто те же самые комменты нужно будет присоеденить и к магазину и к новостям и к студпроекту.
я делаю микро ORM или ActiveRecord или типа того, а потом наследую от них любой объект который можно сохранить в базу. Если что то надо крутое, то перезагружаю методы. Например если сохранять пользователя после регистрации то у него метод __set перегружается из за непрямого пароля в виде где то таком: PHP: <?php public function __set($Property, $Value) { if ($Property == 'Password') { paren::__set($Property, sha1($Value)); } esle { parent::__set($Property, $Value); } } Тоже самое и с картинкой, перезагружается метод Save() ибо надо ее сохранить из временной директории закачки в нужную PHP: <?php public function Save($FileVar) { if(!$this->Id) { //Операции с файлом //return false; если ничего не получилось } else { return parent::Save(); } } Так что плодить объекты не так трудно, да и реализация предка не сильно большая, оперирует только преобразованиями полей и работой с БД...
Psih что имеешь: модуль с событиями в котором для каждого идут СВОИ комменты, со СВИМИ проверками и фильтрацией, требуешь хайлоад кода что хочешь: один раз настроить проверку для всех комментов в событиях что в итоге: т.к. хочется тебе универсализации, да ещё и хайлоад, то насколько мне видится одно с другим не совместимо. в хайлоаде каждый участок кода важен и хорошо прорабатывается, чего с универсализацией никак добиться нельзя. вывод: делать проверки каждый раз что бы я делал: соб-но ты уже об этом написал, я оформил бы комментарии ввиде модулей, думаю некоторые бы использовал в нескольких местах. проблем со связкой думаю быть не должно? =)
Mr.M.I.T. Есть золотая середина между универсализацией и хайлоад-фанатизмом. Посмотрите на Yii - фреймворк, а шустрый мама не горюй.
Костян ЭКранирование - при выводе конечно. При вводе - strip_tags + trim, исключая к примеру поле с паролем kostyl Ну к примеру строить валидацию на основе ORM типа Doctrine под хайлоадом не очень умный ход, т.к. большие накладные расходы. Я валидацию делаю простыми проверками каждого поля руками, использую статический класс по возможности. Всё это дело запихиваю в блок try - catch и плююсь исключениями.
Меня интересует как идет жизненный цилк: момент извлечения данных - декодирование - "отдача" свойства объектом????
Костян Всё просто - в объекте массив, ключи которого являются именами данных. Т.е. is_set('var') это return array_key_exists($this->data['var'];