Clicky

Skocz do zawartości


Zdjęcie
- - - - -

[K3] ORM & Query Builder - dlaczego to działa?

4 odpowiedzi w tym temacie

  • Zaloguj się, aby dodać odpowiedź

#1 t0meck

t0meck

    Początkujący

  • Użytkownik
  • Pip
  • 10 postów

Napisano 16 kwiecień 2011 - 23:28

Witam serdecznie wszystkich forumowiczów.

Założyłem tu konto bo potrzebuję odpowiedzi na pytanie, które mnie męczy już od pewnego czasu.

Mianowicie:
INFO Kohana 3.0.8, 3.1.2 (uczyłem się na 3.0.8 i stworzyłem pierwszy projekt nie używając orm a teraz zwyczajnie pobrałem nową wersję bo mój projekt przechodzi gruntowną modernizację to i framework może być uaktualniony bez problemów)
1. Uruchomiłem moduł ORM i Database (w bootstrap.php usunąłem "//" z początku linii przy orm)
2. Utworzyłem swój model w postaci "class Model_A extends ORM {}"
3. Teraz mogę robić rzeczy takie jak:

$a = ORM('a');
$a->where('name', '=', 'A')->find_all();

Pytanie jest takie:
Dlaczego mogę użyć querybuilder'a w obiekcie który nie ma metody "where" ?
Sprawdzałem w kodzie klasy ORM i nie ma tam metody where a pomimo to działa.
Nie chodzi mi tu o to, że skoro działa to źle. Wręcz przeciwnie ale dziwnie pracuje mi się z obiektami (korzystając z dynamicznych podpowiedzi w moim IDE - eclipse z PDT) z których wywołuję metody, których te obiekty nie posiadają. Chciałbym wiedzieć jakie mam "karty" i czego mogę użyć bez zgadywania. W dokumentacji nie znalazłem odpowiedzi na to pytanie a analizując kod też niestety nie dotarłem do sedna sprawy.

Bardzo proszę o wyjaśnienie dla mnie tego fenomenu (najlepiej ze wskazaniem pliku i nr linii gdzie się ta magia dzieje).

Pozdrawiam

#2 mck

mck

    Jestę Blogerę

  • Admin
  • 1544 postów

Napisano 16 kwiecień 2011 - 23:45

ORM wykonuje wszystkie zapytania przez klasę DB, więc ma do dyspozycji wszystkie jej metody. Magia dzieje się w metodzie __call() przy użyciu $_db_methods :)

#3 t0meck

t0meck

    Początkujący

  • Użytkownik
  • Pip
  • 10 postów

Napisano 16 kwiecień 2011 - 23:59

No to nieświadomie trafiłem z tą "magią" hehe.
Dzięki za odpowiedź.

Czyli ORM ma do dyspozycji tylko swoje metody + metody z klasy DB i na tym koniec?

#4 mck

mck

    Jestę Blogerę

  • Admin
  • 1544 postów

Napisano 17 kwiecień 2011 - 09:21

Tak

#5 Villentre

Villentre

    Młodszy Mastah

  • Użytkownik
  • PipPip
  • 191 postów
  • Skąd:127.0.0.1

Napisano 17 kwiecień 2011 - 09:41

No, warto jeszcze zwrócić uwagę na kilka dodatkowych metod (zwracających wartości pól chronionych), do których odwoływać sie można przez __call(): http://kohanaframewo...rty:_properties
"Zielony... Zielony nowicjusz pomaga nowicjuszowi..."




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych