Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: wynik SELECT-a automatycznie do pól obiektu
Forum PHP.pl > Forum > PHP > Object-oriented programming
eccocce
Hej,
Tak się zastanawiam jak załatwiacie sytuacje, gdy SELECT pobiera wam z bazy np. 50 pól i chcecie je umieścić jako wartości pól jakiegoś obiektu.

Np. mamy obiekt User, który ma 50 pól typu id, email, name, surname ...
Wszystkie dane Usera pobieramy z bazy. Do tej pory pisałem ręcznie:
$u = new User();
$u->setID($row['id']);
...
Dla 10 pól OK, ale gdy pól jest więcej, to trochę nieciekawie.

Macie jakieś sposoby na szybkie uzupełnianie?

PS: w trakcie pisania tego posta zdążyłbym ręcznie uzupełnić około 20 pól wink.gif
askone
Tylko i wyłącznie ORM. O więcej zapytaj wujka G...

Pozdrawiam
eccocce
Np. Propel?
nospor
Czemu tylko i wyłącznie ORM?
Wystarczy tylko dodać metody magiczne i po sprawie.
askone
Cytat(nospor @ 8.09.2011, 14:36:37 ) *
Czemu tylko i wyłącznie ORM?
Wystarczy tylko dodać metody magiczne i po sprawie.


No można, ale jak zapewne wiesz wiele osób uważa ją za zło wink.gif Stąd pewnie o niej nie pomyślałem...
nospor
A ORM to niby z czego korzysta? ORM też korzysta z magii
melkorm
IMHO klasa dziedzicząca po ArrayObject + magiczne __set i __get i tyle wink.gif
destroyerr
@nospor wszystkie ORM'y korzystają z metod magicznych?
nospor
Nie mam bladego pojęcia. Nie używam żadnego.
Aczkolwiek jak widziałem kiedyś w ORM kod:
->getPoleX() to nie inaczej jak tylko przez magie mogli ro zrobić.
destroyerr
No widzisz, nie używasz, nie masz bladego pojęcia a piszesz z pełną stanowczością. Propel generuje metody, a w Doctrine2 trzeba je napisać samemu - czyli da się bez magii.
bastard13
Kurde, nie miałem przyjemności z Propelem, a z Doctrinem tylko < 2, więc też nie wiem, ale znając lubość twórców bibliotek/ORMów/Frameworków PHP do używania metod magicznych przypuszczam, że i tak jest ich pełno tam pełno:) Z tego co wiem to encje w doctrine 2 rzeczywiście ich nie posiadają, ale to nie oznacza, że sam ORM ich nie zawiera.

Cytat(nospor @ 8.09.2011, 20:21:28 ) *
Nie mam bladego pojęcia. Nie używam żadnego.

Ja mimo nieustannego bluzgania na doctrine jednak nie wyobrażam sobie pracy bez czegoś w tym stylu. Chylę czoła:)
nospor
Dobrze, przepraszam smile.gif
Zmylił mnie kawałek kodu, który kiedyś widziałem. Gdybym miał chwilkę czasu to bym popatrzył na te ORM i się z Tobą pokłócił - no ale czasu na takie zabawy brak. wink.gif

Cytat
Ja mimo nieustannego bluzgania na doctrine jednak nie wyobrażam sobie pracy bez czegoś w tym stylu. Chylę czoła:)
Ja zaś sobie nie wyobrażam jak można z tym pracować. Kiedyś się przymierzałem ale dałem sobie spokój - nie przemawia to do mnie w żaden sposób.
destroyerr
Cytat
przypuszczam, że i tak jest ich pełno tam pełno:)

Aha, myślałem, że mówimy o encjach. Jednak jeśli chodzi o cały kod, to na pewno się tam znajdą choćby tylko dla dynamicznych finderów (przykład z dokumentacji):
  1. // A single user by its nickname
  2. $user = $em->getRepository('MyProject\Domain\User')->findOneBy(array('nickname' => 'romanb'));
  3.  
  4. // A single user by its nickname (__call magic)
  5. $user = $em->getRepository('MyProject\Domain\User')->findOneByNickname('romanb');


Cytat
Dobrze, przepraszam
Zmylił mnie kawałek kodu, który kiedyś widziałem. Gdybym miał chwilkę czasu to bym popatrzył na te ORM i się z Tobą pokłócił - no ale czasu na takie zabawy brak.

Nie ma co przepraszać. Szkoda jednak, że brak Ci czasu, nie musiałbyś gdybać.
nospor
@destroyerr coś tu nie gra. "Krzyczysz" na mnie, że gdybam co do metod magicznych, podczas gdy ich nie ma, a zaraz potem sam podajesz przykład kodu gdzie te metody jednak są. O co kaman?
melkorm
Cytat
Ja zaś sobie nie wyobrażam jak można z tym pracować.


Zgadzam się w 100%.

Ja osobiście preferuje jakieś logiczne QueryBuildery typu Zend'a, bo np Kohany to się do niczego nie nadaje ;P
destroyerr
@nospor, jeszcze raz. Byłem przekonany, że rozmawiamy o problemie przedstawionym w pierwszym poście. Ty napisałeś, że ORM'y wykorzystują do tego celu metody magiczne, a tak nie jest. Nie miałem pojęcia (bo i skąd miałem je mieć), że masz na myśli cały ORM skoro temat jest o hydracji.

@melkorm Propel i Doctrine też mają QueryBuildery tongue.gif
nospor
Cytat
. Nie miałem pojęcia (bo i skąd miałem je mieć), że masz na myśli cały ORM skoro temat jest o hydracji.
Wspomniałem o ORM i metodach magicznych bo askone stwierdził że należy tylko używać ORM bo metody magiczne są ble.

Powiedziałem więc, że ORM też stosują metody magiczne, więc czemu nagle metody magiczne w ORM nie są ble a bez ORM są ble.
To tak jakby bardzo nie polecać silnika X, ale zachwalać już samochód z tym właśnie silnikiem.

Na co ty na mnie zacząłeś krzyczeć jak się okazuje bez powodu, ja teraz muszę przez ciebie do psychiatry chodzić bo mam nocne koszmary, rano budzę się cały rozstrzęsiony i tak przez cały dzień....wyślę ci rachunek za psychiatręexclamation.gif tongue.gif wink.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.