Изучение ORM на PHP - Visavi.net https://visavi.net/ RSS - Visavi.net https://visavi.net/assets/img/images/logo_small.png RSS - Visavi.net https://visavi.net/ [email protected] (admin) [email protected] (admin) Fri, 26 Apr 2024 22:10:11 +0300 16. <strong>KpuTuK</strong>, в доктрине примерно так, в activerecord php не знаю, не пробовал еще https://visavi.net/topics/39433/652115 Изучение ORM на PHP Вантуз-мен Tue, 26 Nov 2013 01:47:02 +0400 Сообщения https://visavi.net/topics/39433/652115 15. <strong>Vantuz</strong>, ну тоесть как я понимаю берется содержимое таблицы через обычный sql помещается в обьект и дальше уже на уровне php происходят манипуляции? https://visavi.net/topics/39433/652101 Изучение ORM на PHP KpuTuK Mon, 25 Nov 2013 23:41:28 +0400 Сообщения https://visavi.net/topics/39433/652101 14. <strong>KpuTuK</strong>, orm это не только запросы к базе, это удобные связи между таблицами, работа с разными базами итд<br> да можно все самому, но если писать примитивно, то лишний гемор, а если делать круто, то зачем изобретать велоспиед https://visavi.net/topics/39433/652099 Изучение ORM на PHP Вантуз-мен Mon, 25 Nov 2013 23:33:57 +0400 Сообщения https://visavi.net/topics/39433/652099 13. <strong>Vantuz</strong>, все дело в том что все предпочитают ОРМ вот и хочу разобраться что к чему а так можно и без всего этого обойтись грамотно составив запросы https://visavi.net/topics/39433/652098 Изучение ORM на PHP KpuTuK Mon, 25 Nov 2013 23:30:28 +0400 Сообщения https://visavi.net/topics/39433/652098 activerecord под php вроде норм, радует размер https://visavi.net/topics/39433/652095 Изучение ORM на PHP Вантуз-мен Mon, 25 Nov 2013 22:24:19 +0400 Сообщения https://visavi.net/topics/39433/652095 10. <strong>Башка</strong>, <br> не разобрался т.к. все таки не понял смысла ОРМ....<br> (т. е. Сути) https://visavi.net/topics/39433/652085 Изучение ORM на PHP KpuTuK Mon, 25 Nov 2013 19:57:09 +0400 Сообщения https://visavi.net/topics/39433/652085 10. <strong>Башка</strong>, большое спасибо)))) https://visavi.net/topics/39433/651127 Изучение ORM на PHP KpuTuK Sat, 09 Nov 2013 17:54:48 +0400 Сообщения https://visavi.net/topics/39433/651127 Можно и пример, если разберешся. Беру из рабочей системы, но скорее всего зависимости повиснут и использовать не получится https://visavi.net/topics/39433/651124 Изучение ORM на PHP Артур Sat, 09 Nov 2013 17:16:45 +0400 Сообщения https://visavi.net/topics/39433/651124 <strong>Уникальность объектов</strong><br> <br> а пример можно? а то выходит все чтото на подобие этого<br> <pre class="prettyprint">&lt;?php interface OID { /** * Возвращает обьект по ид * &#64;param int $id */ public function getOID($id); /** * Сохраняет обьект по ид * &#64;param type $id * &#64;param type $obj */ public function setOID($id, $obj); } class ORM implements OID { protected $obj_arr; protected function getOID($id) { return $this -&gt; oid_arr&#91;$id]; } protected function setOID($id, $obj) { $this -&gt;oid_arr&#91;$id] = $obj; } } ?&gt;</pre> https://visavi.net/topics/39433/651122 Изучение ORM на PHP KpuTuK Sat, 09 Nov 2013 17:09:40 +0400 Сообщения https://visavi.net/topics/39433/651122 7. <strong>KpuTuK</strong>,То что ты показываешь, это ActiveRecord, более простое решение, не являющееся ORM. ORM это DataMapper.<br> <br> Вариантов несколько, объясню на примере моего. Для реализации ORM (как правило) нужно решить две задачи: ассоциативность и наследование. Другими словами как сохранять в базе единичные и множественные ссылки на объекты и как сохранять в базе наследование классов. <br> По первому вопросу нужно решить задачу уникальности объектов и преобразование объектов в уникальные ссылки. По второму вопросы есть решение либо на уровне одной таблицы, либо на уровне нескольких.<br> Теперь по каждому подробнее:<br> <strong>Уникальность объектов</strong><br> Решается довольно просто. Реализуем интерфейс, на пример OID, который определяет методы setOID, getOID, getProxy и т.д. Те классы, которые реализуют уникальные объекты, должны реализовать этот интерфейс, а интерфейс определяет объекты, которые можно идентифицировать по некоторому уникальному свойству OID (на пример целочисленный идентификатор).<br> <strong>Создание ссылок</strong><br> Тут тоже все просто. Есть объект с OID, для создания ссылки на него достаточно знать OID и имя класса этого объекта. Реализуем метод getLink который возвращает запись вида $имяКласса:OID. Если в будущем система встретит в базе такую строку, значит это ссылка на объект класса имяКласса с идентификатором OID и его легко восстановить.<br> <strong>Наследование на уровне одной таблицы</strong><br> Это простое решение задачи. Есть класс B который наследуется от класса A. Для хранения обоих классов используется одна таблица. Если нужен класс C от класса B, нужно расширить таблицу. Нарушение 1 нормальной формы.<br> <strong>Наследование на уровне иерархии таблиц</strong><br> Сложная задача. Нужно сделать так, чтобы один класс был в одной таблице, а другой в другой таблице, даже если они в одной иерархии наследования. https://visavi.net/topics/39433/651107 Изучение ORM на PHP Артур Sat, 09 Nov 2013 15:21:33 +0400 Сообщения https://visavi.net/topics/39433/651107 6. <strong>Башка</strong>, спасибо)))<br> То есть как я понял мы создаем общий класс (class myORM) и потом создаем дочерние на каждую таблицу (class myTable) и обращаемся к ней <br> <pre class="prettyprint">&lt;?php $sql = new myORM(&#039;myTable&#039;); // далее уже работаем с объектом класса myTable $sql-&gt;select(&#039;id&#039;)-&gt;where(&#039;login&#039;, &#039;test&#039;); // что составит sql запрос SELECT `id` FROM `myTable` WHERE `login` = &#039;test&#039; ?&gt;</pre> (стр 186-187)<br> смысл тогда от нее...<br> <br> <em><span style="font-size:x-small">Добавлено через 04:55 сек.</span></em><br> конструктор получился .... https://visavi.net/topics/39433/651095 Изучение ORM на PHP KpuTuK Sat, 09 Nov 2013 14:17:31 +0400 Сообщения https://visavi.net/topics/39433/651095 [url=http://109.172.57.193/library/Компьютер/Программирование/Разработка/Архитектура корпаративных программных приложений-Фаулер М-2006.pdf]56 стр.[/url]<br> <br> <em><span style="font-size:x-small">Добавлено через 02:13 сек.</span></em><br> Достаточно определить способ проекции свойств классов на реляционную базу данных, далее будет проще. https://visavi.net/topics/39433/651066 Изучение ORM на PHP Артур Fri, 08 Nov 2013 22:50:52 +0400 Сообщения https://visavi.net/topics/39433/651066 3. <strong>KpuTuK</strong>, чтобы понять что она из себя представляет, изучи уже готовое https://visavi.net/topics/39433/651062 Изучение ORM на PHP Изнаур Fri, 08 Nov 2013 21:20:40 +0400 Сообщения https://visavi.net/topics/39433/651062 <a href="http://design-pattern.ru/" target="_blank" rel="nofollow">http://design-pattern.ru/</a> - &quot;Паттерны архитектуры источников данных&quot; https://visavi.net/topics/39433/651060 Изучение ORM на PHP Александр Fri, 08 Nov 2013 21:14:44 +0400 Сообщения https://visavi.net/topics/39433/651060 2. <strong>alexandr.sytnyk</strong>, я наверное не совсем правильно выразился....<br> я сам написать ее хочу но не знаю что она из себя представляет((( https://visavi.net/topics/39433/651056 Изучение ORM на PHP KpuTuK Fri, 08 Nov 2013 19:43:51 +0400 Сообщения https://visavi.net/topics/39433/651056