• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Dobry tutorial dla ORM w PHP.

Object Storage Arubacloud
0 głosów
2,380 wizyt
pytanie zadane 17 listopada 2016 w PHP przez HaKIM Szeryf (87,590 p.)
zamknięte 20 listopada 2016 przez HaKIM

Witam.

Podczas robienia funkcjonalności które zawiera hotel przyszła kolej na pokoje. Od razu naszła mnie myśl - W jaki sposób najlepiej zaimplementować unikalny nr. pokoju który byłby przydawany klientom, poprzez recepcje?

Pierwsze co to na myśl przyszły mi bazy danych. Nr. pokoju = Id. pokoju.

Nie chcę tworzyć bazy danych.

Zacząłem szukać tutoriali dla ORM w PHP, acz tak czy siak trafiam na Doctrine.

Oczywiście, mógłbym wykorzystać tę bibliotekę, acz, chcę poznać ORM na czysto.

Ogólny zarys znam:

Tworzymy obiekt(y) który(e) odwzoruje(ą) bazę danych.

Jednak nie mam zielonego pojęcia jak dobrze rozdzielić, ponazywać, przechowywać jak i powiązać całość z systemem. 

Na tę chwilę myślę nad pobraniem Doctrine i zagłębienie się w ichniejszy kod, tylko to zostawię w razie braku rzeczowych kursów.

Znalazłem tenże kurs:

http://www.devshed.com/c/a/mysql/building-an-orm-in-php/

Acz, jest on z roku 2011, nie wiem na ile ORM'y zmieniły się od tamtego czasu w PHP.

komentarz zamknięcia: Odpowiedź padła w komentarzach.
komentarz 17 listopada 2016 przez Boshi VIP (100,240 p.)
edycja 17 listopada 2016 przez Boshi
ale chcesz korzystać z gotowców typu Doctrine/AR czy pisać własną implementację ?
nie bardzo rozumiem też, że nie chcesz tworzyc bazy danych, na pewno bazy? czy może implementacji architektury bazy?

Np w AR(active record z którego korzysta Yii2) masz mapowanie nazwy modelu na encje bazodanową.  Coś jak;

$nazwaTabeli extends ActiveRecord {} i wszystkie kolumny mapowane są z automatu jako właściwości klasy.

 

imo wg mnie własna to tylko do nauki niczego więcej.
komentarz 17 listopada 2016 przez HaKIM Szeryf (87,590 p.)
No, ta, oczywiście, że do nauki.

Implementowanie Doctrine do tak mało zaawansowanego projektu mi nie leży - a tak to bym się nauczył ORM od podszewki.
komentarz 17 listopada 2016 przez Boshi VIP (100,240 p.)
ORM to wzorzec, ale tak na prawdę na najniższej warstwie programowej masz czystego sql-a, bo chcąc nie chcąc inaczej nie ma możliwości wykonania zapytania.

możesz tworzyć abstrakcję wysokowarstwowe, ale gdzieś tam nisko czystego sqla i tak wykonasz.

 

Zauważ jak działają ormy.. Tworzysz obiekt modelu i wykonujesz wybraną metodę, np  fetchAll() a metoda ta wybiera wszystkie rekordy z bazy i zwraca odpowieni obiekt który musisz przetworzyc.
komentarz 18 listopada 2016 przez efiku Szeryf (75,160 p.)
Moim zdaniem lepiej jest wgryzać się w kod doctrine by zrozumieć jak to działa. Do tego będziesz musiał też ogarnąć wzorce.. Tworzenie samemu ORMa sprawi, że no.. skończy się na PDO::FETCH_OBJ :> bo to trochę jednak wyzwanie. Powodzenia :)

PS:
Czasami też można popatrzeć na różne ormy zobaczyć różnice w jakości kodu, całym api i ćwiczyć.
komentarz 18 listopada 2016 przez HaKIM Szeryf (87,590 p.)
edycja 18 listopada 2016 przez HaKIM

Dziwne...

Nie mam do końca pewności czy chodzi Ci stricte o SQL czy to, co robi.

Jeżeli o stricte SQL, to potrzebuję, tak czy owak, bazy danych co kłóci mi się z:

Mapowanie obiektowo-relacyjne (ang. Object-Relational Mapping ORM) – sposób odwzorowania obiektowej architektury systemu informatycznego na bazę danych (lub inny element systemu) o relacyjnym charakterze.

W takim razie jutro, snu potrzebuję, spróbuję odnaleźć UML dla ORM - Będzie prościej.

Coś się znajdzie:

https://github.com/domnikl/DesignPatternsPHP/tree/master/Structural/DataMapper

Choć, stricte wzorca ORM nie widzę. 


Dzięki Efik (Jak i Boshi).

W końcu zapowiada się pracowity dzień(A raczej dni)... Brakowało mi takich weekendów. :D

komentarz 18 listopada 2016 przez event15 Szeryf (93,790 p.)
Jeśli chcesz dowiedzieć się czegokolwiek mądrego o wzorcach bazodanowych:

http://helion.pl/ksiazki/architektura-systemow-zarzadzania-przedsiebiorstwem-wzorce-projektowe-martin-fowler,szabko.htm

Masz tam opis DataMapera, ORMa, ARa i wielu innych bardzo potrzebnych wzorców związanych z bazami danych.
1
komentarz 18 listopada 2016 przez event15 Szeryf (93,790 p.)
HaKIM - nie ma czegoś takiego jak wzorzec ORM.

ORM można stworzyć za pomocą Active Record lub Data Maperem. Oba rozwiązania mają swoje plusy i minusy, aczkolwiek AR ma masę ograniczeń.

Przykładem są narzędzia: Eloquent (AR) i Doctrine (DataMaper).

Aczkolwiek Doctrine zaczynało od AR i autor zrozumiał, że nie tędy droga ;)

 

Dodatkowo z DataMaperami wiążą się również takie wzorce jak DI, czy Unit of Work. Proxy, w przypadku doctrine znajdziesz też różne Specyfikacje, czy obiekty translacyjne.
komentarz 18 listopada 2016 przez Boshi VIP (100,240 p.)
Widzicie, człowiek po kilku głębszych  nie powinien otwierać forum, ale plus jest, eventa ściągnąłem na forum.

 

Oczywiście mój błąd, bo Doctrine czy Eloquent to nie wzorce. Wzorcami jest jak pisałe Event, DataMapper i AR.

Dzięki za poprawkę ;)
komentarz 18 listopada 2016 przez HaKIM Szeryf (87,590 p.)

Boshi, ściągaj go częściej. : D

Event, dzięki za wyjaśnienie/doprecyzowanie.

Książkę zamówię, tylko muszę trochę grosza zaoszczędzić.

Na ten czas poczytam z różnych źródeł o DataMaperActive Record jak i samemu ORM. Dodatkowo zagłębię się w Doctrine, pewnie co nieco dowiem się z ze strony:

http://www.doctrine-project.org/

Miłego.

1 odpowiedź

+3 głosów
odpowiedź 18 listopada 2016 przez event15 Szeryf (93,790 p.)
Padło tu, że ORM jest wzorcem.

NIE JEST.

To jest technika którą realizuje się wieloma wzorcami jak napisałem.

Podobne pytania

0 głosów
1 odpowiedź 212 wizyt
pytanie zadane 11 czerwca 2017 w PHP przez marcin99b Szeryf (82,180 p.)
0 głosów
1 odpowiedź 186 wizyt
pytanie zadane 27 kwietnia 2020 w PHP przez XiverKi Bywalec (2,050 p.)
–2 głosów
1 odpowiedź 177 wizyt
pytanie zadane 28 czerwca 2018 w C# przez pingwin1993 Użytkownik (570 p.)

92,584 zapytań

141,434 odpowiedzi

319,670 komentarzy

61,968 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...