| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > PHP работа с базой через объекты |
| Автор: Atlete 7.7.2008, 11:17 |
| Вот задался я таким вопросом, в java для работы с базой есть интересный фреймворк hibernate и еще один ibatis (те с которыми я сталкивался). А вот теперь суть вопроса, если какой либо аналог для PHP чтобы работать с базой на уровне объектов или же необходимо самому написать свое решение? |
| Автор: Sannis 7.7.2008, 11:33 |
| Есть. Doctrine, Propel, остальные есть http://en.wikipedia.org/wiki/List_of_object-relational_mapping_software#PHP. |
| Автор: Atlete 7.7.2008, 11:41 |
| Огромное спасибо, буду изучать |
| Автор: Mal Hack 7.7.2008, 11:57 |
| А чем не устраивает стандартное средство PHP - PDO? http://php.net/pdo |
| Автор: Feldmarschall 7.7.2008, 12:01 |
| Почитай по ссылке Sannis - чем. |
| Автор: Mal Hack 7.7.2008, 12:08 |
| и? Нужны низкоуровневые исходники? |
| Автор: Sannis 7.7.2008, 14:41 |
| Нужно объектное предствление таблиц, т.е. не ОО интерфейс к БД как таковой, а ORM обёртка, насколько я понимаю. |
| Автор: Mal Hack 7.7.2008, 16:19 |
| А можно банальный тупой пример, как это выглядит... |
| Автор: Pokoinik 7.7.2008, 16:27 | ||
Mal Hack,
http://www.phpdoctrine.org/documentation/manual/0_11?one-page |
| Автор: Mal Hack 7.7.2008, 16:41 |
| Обычная ООП обертка, с большей абстракцией... Лишнее... ИМХО. |
| Автор: Pokoinik 7.7.2008, 17:49 |
| Mal Hack, согласен Единственное приемущество - более красивый код (эстетическое наслаждение Из недостатков выяснилось: 1. Отвратительный перфоманс. Иногда нужно прочитать просто поле объекта, а ORM инициализирует все поля и зависимые сушности, хоторые нах. не нужны в данный момент 2. От ORM ожидаешь что кода будет меньше. Получается наоборот. 3. Усложняется отладка. Вместо понятного отточеного SQL exception получаешь stacktrace ошибок внутри движка ORM 4. Дополнительные уровни абстракции нужны, чтобы скрывать детали реализации, чтобы не приходилось вникать в то, что подложено снизу. На практике хватает дырок в абстракциях, из-за которых пока не разберёшь весь нижний уровень - не поймёшь что сверху происходит. 5. SQL заменитель (внутренний язак запросов) вместо реального SQL иногда сильно ограничивает возможности |
| Автор: Mal Hack 7.7.2008, 18:31 |
| Ну а чего вы хотите? Первая надстройка - переопределенный и расширенный класс PDO или MySQL, вторая - API самой библиотеки... |
| Автор: nerezus 8.7.2008, 06:56 |
| Mal Hack, а как насчет автоматической генерации админки? как насчет простого save() вместо написания запросов? как насчет отсутствия лишнего кода по преобразованию объекта в запрос для записи в базу и кода по преобразованию результатов запроса в объекты при выборке? |
| Автор: Mal Hack 8.7.2008, 09:40 | ||
как ты себе это представляешь? Давай просто определимся с термнами чтоли, а то мне кажется мы несколько о разных вещах говорим. Против. Абстракция - хорошая вещь, но в меру. Для каждой задачи есть какой-то максимальный уроень абстракции, который нельзя превышать, иначе теряется управляемость скрипта.
Я могу и в массивы преобразовать, что будет куда более оптимальнее. Код-то не лишний, ты просто его не видишь =) |