[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: ORM
Страницы: 1, 2
Ranerg
ORM — запись объектов программы в реляционную базу данных, отображение объекта и его представления в виде набора таблиц.
Я приведу пример:

$post = R::dispense('post');
$post->text = 'Hello World'; //Меняет значение
$post = R::store($post); //Создаем или обновляем

Это пример работы класса взятого сайта проекта RedBeanPHP.

В общем, это легкий доступ к базам данных.
Читать код, я посчитал, насилием из-за того, что там используется PDO.
Может быть у кого-нибудь есть наработки своей ORM.

Или легкий фреймворк, занимающий порядка 100 кб:)
Не говорите мне "Чем тебя не устраивает PDO и чужие наработки":)
Мне интересно самому понять, как делаются такие вещи, ну у меня еще независимость к коду. Не хочу зависить от чужих проектов. Я бы хотел чтобы мне дали тут основы реализации, натолкнули на другие статейки, легкие наработки. На основе этого я сделаю свой маленький фреймворк
tomash
Посмотри как реализовано ORM, например в Кохане, там все достаточно просто и понятно.

_____________
Чтобы понять, что такое рекурсия - нужно понять, что такое рекурсия.
T1grOK
Есть уже масса фреймворков на любой вкус. Написанные и оттестированные людьми с более чем 10 летним опытом!
Взять тот же TinyMVC, Kohana или любой другой каркасный фремворк.
Проще всего понять все это будет, если изучите 1 2 существующих фреймворка. Этот опыт не заменит вам простые объснения.

_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
SlavaFr
Цитата (Ranerg @ 6.01.2013 - 12:13)
ORM  — запись объектов программы в реляционную базу данных, отображение объекта и его представления в виде набора таблиц.
Я приведу пример:

$post = R::dispense('post');
$post->text = 'Hello World';  //Меняет значение
$post = R::store($post);      //Создаем или обновляем

Это пример работы класса взятого сайта проекта RedBeanPHP.

В общем, это легкий доступ к базам данных.
Читать код, я посчитал, насилием из-за того, что там используется PDO.
Может быть у кого-нибудь есть наработки своей ORM.

Или легкий фреймворк, занимающий порядка 100 кб:)
Не говорите мне "Чем тебя не устраивает PDO и чужие наработки":)
Мне интересно самому понять, как делаются такие вещи, ну у меня еще независимость к коду. Не хочу зависить от чужих проектов. Я бы хотел чтобы мне дали тут основы реализации, натолкнули на другие статейки, легкие наработки. На основе этого я сделаю свой маленький фреймворк

Я знаю на сегодняшний день только 2 типа людей которые пишут свой фрамеворк
1) Кто не понимает чужой код и документацию.
2) Кто не согласен с имеющимися фрамеворками по какой то уважительной причине, которая не дает подстроить уже имеющиеся фрамеворки под свои нужды.

Судя из заявлений по поводу "100 кб кода" и не любви к PDO и другим готовым Фрамеворкам ты относишся к первому типу.
Мои советы очень просты:
1) Учись понимать чужой код и выбери для этих целей что то, что хорошо документировано.
2) Дойди таким образом до людей типа 2, которые знают чем они конкретно не довольны и по чему ( я имею в виду уважительные причины)
3) Подумай можно ли исправить или подстроить под твои нужды то, что тебя не устраивает.

Если ты пройдеш эти 3 ступени, то возможно тебе свой собственный фрамеворк и не понадобится, так как ты увидеш то, что другие фрамеворки тоже не лохи писали.

_____________
↓↓↓↓↓↓↓↓↓↓
ответ может быть здесь
или в mysql_error();
Ranerg
SlavaFr
Много резонерствуешь, для моего решения не нужны фреймворки:)
Чужой код я читаю, на данный момент я понял, что ORM - вещь для тех, кто разучился писать запросы вручную. И теперь я собираюсь написать совсем маленький ORM буквально с какой-то там простой реализацией CRUD:)
А теперь про боязнь PDO, мне кажется, что MySQLi идентичен PDO. Вдобавок MySQLi рекомендован самими разработчиками PHP.

Я не считаю, что для решение моей задачи будет подходить чужие наработки.
И модель HMVC можно реализовать без вашей Kohana:) Все, что сделно моими руками - принадлежит мне. А все что сделано на фреймворках - фактически зависит от разработчиков фреймворка.

Почитав код других программистов я понял, что такие вещи заточены под всех.

Примечание: не надо относить меня к какой-либо группе, если у меня стремление к программной независимости и свобода от фреймворков:)
tomash
Можно сделать без Коханы, я привел пример, где можно почерпнуть про тот же ОРМ. И вобще по ОРМ уже писано переписано. Изучайте.

_____________
Чтобы понять, что такое рекурсия - нужно понять, что такое рекурсия.
Ranerg
tomash
Спасибо, я это уже понял
SlavaFr
Цитата (Ranerg @ 7.01.2013 - 08:28)
Я не считаю, что для решение моей задачи будет подходить чужие наработки.
И модель HMVC можно реализовать без вашей Kohana:) Все, что сделно моими руками - принадлежит мне. А все что сделано на фреймворках - фактически зависит от разработчиков фреймворка.

в open-source порэкте ты можелш все делать под себя и больше не зависеть от других.
Просто они уже все зделали и предлагют тебе бесплатно этим пользоватся. Если твое время не дорого, то можно конечно по 100 раз колесо изабретать.
Цитата (Ranerg @ 7.01.2013 - 08:28)
римечание: не надо относить меня к какой-либо группе, если у меня стремление к программной независимости и свобода от фреймворков:)

Ок ты пренадлежиш другох групе, "Лже независемые".
От зависимости не спрятатся, Tы зависеш от php, javascript, mysql.
К сожалению жизни не хватит нормальный и чистых код на все случаи жизни написать, а вот хоршо написаный и продуманный для изменений код, сможеш легко подстроить под себя.

Хочеш из прикола дам тебе самую порстую функцию ПРАВИЛЬНО написать?
Например складывание двuх интегер ( function add(int a, int B ) ) с написанием TestUnita?
Знаеш ли ты, что для професионального теста этой функции около 6 тестов требуется? Знаеш ли ты, что имеется минимум 2 типа Ехception которые могут возникнуть при ее вызове?
Знаеш ли ты, что доказательство того, что функция работает правильно затрачивает больше усилий, чем написание самой функции?

После этого стазу становишся благодарным за кождую строчку надежного кода, которую тебе не пришлось писать самому.

_____________
↓↓↓↓↓↓↓↓↓↓
ответ может быть здесь
или в mysql_error();
Ranerg
SlavaFr
Теперь мой черед тебе принести неприятности.

Я все это знаю. Может быть я и новичек в PHP.

Но это не значит, что я не смогу обходиться без фреймвоков.
ИМХО. Тебя не должно интерисовать моя любовь к фреймворках. Я захотел понять как это делается, а не получить порцию "пакостей" в лицо. Мол я нехристь, не пользуюсь библиотеками.

Я завишу от php, javascript, mysql только потому, что это идет в мировое использование.
Тебя вообще не должно касаться к какой я группе отношусь и кем я стану со своими страхами. Я уверен в том, что написание нового продукта дасть мне колосальный опыт. Причем эту наработку я смогу использовать в будущем.

Я написал этот топик только потому, что мне интересно сделать свое. Я любитель, а не профессионал, у меня есть время заняться этим.
Если я не хочу пользоваться чужими фреймворками, это значит, что я не хочу ими пользоваться.
Если для тебя генианльные вещи измеряются тысячами строчками кода, то мне больше нравится "Краткость - сестра таланта". Многие писали свои простые рещения под себя и использоывали это на практике. Написав вещь под себя, ты не только получаешь огромный опыт, но и заметно быстрее делаешь свою наработку.
SlavaFr
Приношу мои извенения.
Просто мне не совсем понятно как тебе помоч?
Сам ORM написать не можеш, а професиональные тебя не устраивают по не оправданым причинам!
Желаю успехов в поиске решений!


_____________
↓↓↓↓↓↓↓↓↓↓
ответ может быть здесь
или в mysql_error();
Ranerg
SlavaFr
Сам ORM я хотел написать, пока не понял, что это совсем уж позорно, чтобы до базы добираться через методы объекта:) Но читать Kohana ORM я буду, потому, что это более понятный пример для меня. И я теперь понял, что из ORM мне нужно только обращение к таблице как к полям объекта, а потом сохранять, или загружать.

Профессиональные ORM, я могу написать причину. Если я не ошибаюсь, то ORM это работа с базами подобно объекту? У каждого объекта свои есть методы, я видел ORM в использовании, и там я видел, что запросы делают не через стандартные $db->query('SELECT * FROM name');
А вот так $db->select('*')->from('name');
Я не ошибаюсь?
Если я неправильно представляю использование ORM, то сможешь мне тут объяснить?
T1grOK
Цитата (Ranerg @ 7.01.2013 - 13:07)
А вот так $db->select('*')->from('name');

Это больше похоже на обычный Query Builder

_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
T1grOK
Цитата (Ranerg @ 7.01.2013 - 13:07)
Но читать Kohana ORM я буду, потому, что это более понятный пример для меня.

Если разберетесь со стандартным Kohana ORM обратите внимание еще на Sprig или Jelly ORM, у них более серьезная абстрагированость от прямых запросов.

Конечно монстром ORM является Doctrine.

Пока сами не попробуете, не стокнетесь, врят ли поймете нужно ли вам это?

Мне приходилось поддерживать(да и на текущий момент поддерживаю) довольно крупный проект. Его разработка длится уже около полугода. И если бы не ORM, я бы офигел переписывать запросы, угождая капризам заказчика.

_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
Ranerg
Я думал создать систему которая бы представляла результат как объект, можно было бы легко производить шаблонизацию потом:) Сейчас я посмотрю Doctrine
SlavaFr
@T1grOK Propel тоже известная библиотека которая раньше использовалась в symfony. Честно говоря мне очень сложно использвать для сложных запросов Criteria, и руку чешутся писать обычными SQL запрсоы.

_____________
↓↓↓↓↓↓↓↓↓↓
ответ может быть здесь
или в mysql_error();
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.