Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> PHP работа с базой через объекты, Поиск рещения для работы с обектами 
:(
    Опции темы
Atlete
  Дата 7.7.2008, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 15.8.2007

Репутация: нет
Всего: нет



Вот задался я таким вопросом,
в java для работы с базой есть интересный фреймворк hibernate и еще один ibatis (те с которыми я сталкивался).
А вот теперь суть вопроса,
если какой либо аналог для PHP чтобы работать
с базой на уровне объектов или же необходимо самому написать свое решение?
PM MAIL ICQ   Вверх
Sannis
Дата 7.7.2008, 11:33 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 14.8.2007
Где: Москва

Репутация: 6
Всего: 13



Есть. Doctrine, Propel, остальные есть здесь.


--------------------
Я Критик Джим, раньше писал моды для IPB 1.3.x-2.3.x, а теперь продвигаю Node.js в массы.
PM MAIL WWW   Вверх
Atlete
Дата 7.7.2008, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 15.8.2007

Репутация: нет
Всего: нет



Огромное спасибо, буду изучать
PM MAIL ICQ   Вверх
Mal Hack
Дата 7.7.2008, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



А чем не устраивает стандартное средство PHP - PDO?
http://php.net/pdo
PM ICQ   Вверх
Feldmarschall
Дата 7.7.2008, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



Почитай по ссылке Sannis - чем.
PM   Вверх
Mal Hack
Дата 7.7.2008, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



и? Нужны низкоуровневые исходники?
PM ICQ   Вверх
Sannis
Дата 7.7.2008, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 14.8.2007
Где: Москва

Репутация: 6
Всего: 13



Нужно объектное предствление таблиц, т.е. не ОО интерфейс к БД как таковой, а ORM обёртка, насколько я понимаю.


--------------------
Я Критик Джим, раньше писал моды для IPB 1.3.x-2.3.x, а теперь продвигаю Node.js в массы.
PM MAIL WWW   Вверх
Mal Hack
Дата 7.7.2008, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



А можно банальный тупой пример, как это выглядит...
PM ICQ   Вверх
Pokoinik
Дата 7.7.2008, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 283
Регистрация: 17.3.2007
Где: /dev/null

Репутация: 2
Всего: 3



Mal Hack
Код

<?php

class User extends Doctrine_Record
{
    public function setTableDefinition()
    {
        // set 'user' table columns, note that
        // id column is auto-created as no primary key is specified

        $this->hasColumn('name', 'string',30);
        $this->hasColumn('username', 'string',20);
        $this->hasColumn('password', 'string',16);
    }

    public function setUp()
    {
        $this->actAs('Timestampable');
    }
}

?>

http://www.phpdoctrine.org/documentation/m...l/0_11?one-page


--------------------
ICQ: 490-993
Существует только 10 типов людей: те, которые понимают двоичную систему, и которые ее не понимают!!!
Опасайтесь людей верующих, ибо у них есть боги, которые им все прощают.

Делай или не делай! Никаких попробую!
Йода (Yoda), мастер-джедай
PM MAIL ICQ   Вверх
Mal Hack
Дата 7.7.2008, 16:41 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Обычная ООП обертка, с большей абстракцией...  Лишнее... ИМХО.
PM ICQ   Вверх
Pokoinik
Дата 7.7.2008, 17:49 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 283
Регистрация: 17.3.2007
Где: /dev/null

Репутация: 2
Всего: 3



Mal Hack, согласен
Единственное приемущество - более красивый код (эстетическое наслаждение smile. Приятно, мапишь в XML колонки БД на поля объектов, и просто пользуешь объекты.

Из недостатков выяснилось:
1. Отвратительный перфоманс. Иногда нужно прочитать просто поле объекта, а ORM инициализирует все поля и зависимые сушности, хоторые нах. не нужны в данный момент
2. От ORM ожидаешь что кода будет меньше. Получается наоборот.
3. Усложняется отладка. Вместо понятного отточеного SQL exception получаешь stacktrace ошибок внутри движка ORM
4. Дополнительные уровни абстракции нужны, чтобы скрывать детали реализации, чтобы не приходилось вникать в то, что подложено снизу. На практике хватает дырок в абстракциях, из-за которых пока не разберёшь весь нижний уровень - не поймёшь что сверху происходит. 
5. SQL заменитель (внутренний язак запросов) вместо реального SQL иногда сильно ограничивает возможности


--------------------
ICQ: 490-993
Существует только 10 типов людей: те, которые понимают двоичную систему, и которые ее не понимают!!!
Опасайтесь людей верующих, ибо у них есть боги, которые им все прощают.

Делай или не делай! Никаких попробую!
Йода (Yoda), мастер-джедай
PM MAIL ICQ   Вверх
Mal Hack
Дата 7.7.2008, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Ну а чего вы хотите? Первая надстройка - переопределенный и расширенный класс PDO или MySQL, вторая - API самой библиотеки...

PM ICQ   Вверх
sTa1kEr
Дата 7.7.2008, 19:23 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 56
Всего: 146



Цитата(Okoinik @  7.7.2008,  18:49 Найти цитируемый пост)
Единственное приемущество - более красивый код (эстетическое наслаждение smile.

Это вообще не преимущество. 

Имхо, преимущества ORM заключаются в:
  • Увеличение скорость разработки. И это не только за счет генерации готового кода на основании уже спроектированных схем UML, YAML, etc, либо высокого уровня абстракции (хороший пример Zend Framework, где для создания модели объекта, достаточно прописать одно свойство), но и самой работы с этими сущностями.
  • Такая технология сильно упрощает создание хорошо масштабируемых систем.
  • Расширение функционала адаптера. Хороший пример - это iBATIS. Их шаблонная реализация SQL запросов добавляет еще один уровень абстракции, что дает достаточно интересные перспективы. Представьте prepared statements, которыми можно описать достаточно сложный динамический запрос и с одинаковым синтаксисом для всех БД. Хотя именно к ORM это уже имеет не большое отношение...

Цитата(Okoinik @  7.7.2008,  18:49 Найти цитируемый пост)
Отвратительный перфоманс.

Да, это так. Но при грамотном подходе его можно компенсировать.

Цитата(Okoinik @  7.7.2008,  18:49 Найти цитируемый пост)
Иногда нужно прочитать просто поле объекта, а ORM инициализирует все поля и зависимые сушности, хоторые нах. не нужны в данный момент

Если нужно только прочитать поле - то  нужно просто прочитать поле. Зачем использовать ORM там где это не нужно? Для эстетики кода?

Цитата(Okoinik @  7.7.2008,  18:49 Найти цитируемый пост)
Усложняется отладка. Вместо понятного отточеного SQL exception получаешь stacktrace ошибок внутри движка ORM

Если получаешь stacktrace ошибок движка, то может стоит использовать более удачную реализацию движка, с обработкой ошибок?

Цитата(Okoinik @  7.7.2008,  18:49 Найти цитируемый пост)
На практике хватает дырок в абстракциях, из-за которых пока не разберёшь весь нижний уровень - не поймёшь что сверху происходит. 

То же что и предыдущий пункт.

PM MAIL   Вверх
nerezus
Дата 8.7.2008, 06:56 (ссылка) |  (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 12
Всего: 43



Mal Hack, а как насчет автоматической генерации админки?
как насчет простого save() вместо написания запросов?
как насчет отсутствия лишнего кода по преобразованию объекта в запрос для записи в базу и кода по преобразованию результатов запроса в объекты при выборке?


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
Mal Hack
Дата 8.7.2008, 09:40 (ссылка) |   (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Цитата(nerezus @  8.7.2008,  06:56 Найти цитируемый пост)
Mal Hack, а как насчет автоматической генерации админки?

как ты себе это представляешь? Давай просто определимся с термнами чтоли, а то мне кажется мы несколько о разных вещах говорим.

Цитата(nerezus @  8.7.2008,  06:56 Найти цитируемый пост)
как насчет простого save() вместо написания запросов?

Против. Абстракция - хорошая вещь, но в меру. Для каждой задачи есть какой-то максимальный уроень абстракции, который нельзя превышать, иначе теряется управляемость скрипта.

Цитата(nerezus @  8.7.2008,  06:56 Найти цитируемый пост)
как насчет отсутствия лишнего кода по преобразованию объекта в запрос для записи в базу и кода по преобразованию результатов запроса в объекты при выборке? 

Я могу и в массивы преобразовать, что будет куда более оптимальнее. Код-то не лишний, ты просто его не видишь =)
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1033 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.