![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 26 Pomógł: 0 Dołączył: 11.09.2005 Ostrzeżenie: (0%) ![]() ![]() |
witam serdecznie
Nie moge za bardzo załapać o co chodzi z tymi magicznymi metodami __set __get na wikipedi jest napisane __get() metoda jednoparametrowa, jej parametr to nazwa pola, którego nie ma w obiekcie, a była próba odczytania jej wartości próba jaka próba nie rozumie za bardzo. gdyby ktoś mógł to jasno zpreceyzować to będę ogromnie wdzięczny __set() metoda dwuparametrowa, gdzie pierwszy parametr to nazwa pola a drugi to wartość przypisana, metoda ta wykonywana jest w momencie, gdy chcemy przypisać wartość do pola, które nie zostało zawarte w obiekcie. To w sumie jeszcze łapię chociaż nie do końca rozumie jakie mogłoby być przykładowe zastosowanie tworzenia nowej składowej na zewnątrz klasy. Ogólnie prosiłbym o jakiś prosty konkretny przyklad albo jakies objasnienie problemu. W pewnej książce znalazłem coś takiego.
kurde swoją drogą sam nie wiem jak można napisać coś w książce jeżeli to nie ma pokrycia w rzeczywistości ![]() Ten post edytował marcintom 31.07.2006, 19:43:48 |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 504 Pomógł: 2 Dołączył: 31.03.2006 Skąd: Londyn Ostrzeżenie: (0%) ![]() ![]() |
Polega to na tym, ze jesli robisz odwolanie do wlasciwosci ktora nie istnieje (czy metody <<__call>>) funkcje te przechwyca zadanie.
W najbardziej lakonicznym przykladzie metody np __get mozna uzyc do obslugi bledu. Mowiac scislej jesli probujesz zrobic $obj->nieistniejacy metoda __get przechwyci to zadanie i moze np wyprintowac "Zadana wlasciwosc nie istnieje". Jednakze mozna zrobic jesio wiele roznych rzeczy dzieki tym metoda, odsylam do artykulu w ktorym podanych jest wiecej zrozumialych i mysle dobrych przykladow (sorry za konkurencje ![]() Powodzenia. -------------------- "Wizja czasu jest szeroka, lecz kiedy sie przez nia przechodzi, czas staje sie waskimi drzwiami"
![]() |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 111 Pomógł: 0 Dołączył: 27.07.2005 Ostrzeżenie: (0%) ![]() ![]() |
biorąc na tapetę Twój przykład:
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 26 Pomógł: 0 Dołączył: 11.09.2005 Ostrzeżenie: (0%) ![]() ![]() |
Czyli ta metoda __get z książki to jakieś przegięcie.
Zgodnie z tym co mi sugerujecie - za co dziekuje - kod tej metody nie ma sensu bo nigdy nie zwróci czegoś czego nie ma . Hmm Teraz już to chyba łapę. |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 197 Pomógł: 0 Dołączył: 11.07.2005 Ostrzeżenie: (0%) ![]() ![]() |
Cytat ..$obj->nieistniejacy metoda... Nie nieistniejąca metoda, a nieistniejące pole ![]() Cytat Zgodnie z tym co mi sugerujecie - za co dziekuje - kod tej metody nie ma sensu bo nigdy nie zwróci czegoś czego nie ma . Mylisz się ![]()
Ten post edytował Levabul 31.07.2006, 20:25:40 -------------------- ![]() |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 504 Pomógł: 2 Dołączył: 31.03.2006 Skąd: Londyn Ostrzeżenie: (0%) ![]() ![]() |
Metoda uzyteczna jak najbardziej, dosc obrazowym przykladem acz niekoniecznie rzeczywistym moze byc np pobieranie obrazkow.
Wyswietlasz avatary ktora sa przechowywane przez wlasciwosci klasy (jak mowilem malo to zyciowe), w koncu ktos nie uploadowal avatara, wiec zadanie przechwytuje __get i wyswietla np jakis domyslny obraz. Ogolnie mozna tym zabezpieczyc przed bledami np literowkami. Mimo wszystko niejednokrotnie czytalem, ze raczej powinno sie tworzyc wlasne metody dostepowe do wlasciwosci. Takze wsie wlasciwosci private/protected no i metody dostepowe do tego. To jest tak zwana hermetyzacja ![]() @Levabul przeczytaj to jako ...nieistniejacy, wtedy wlasnie metoda __get :PPPPPPPPPP Ten post edytował thornag 31.07.2006, 20:14:44 -------------------- "Wizja czasu jest szeroka, lecz kiedy sie przez nia przechodzi, czas staje sie waskimi drzwiami"
![]() |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 26 Pomógł: 0 Dołączył: 11.09.2005 Ostrzeżenie: (0%) ![]() ![]() |
Przykład Levabul 'a jak najbardziej JUŻ zrozumiały
![]() Ale nie za bardzo wiem cóż to takiego te avatary ![]() |
|
|
![]()
Post
#8
|
|
![]() Admin Techniczny Grupa: Administratorzy Postów: 2 071 Pomógł: 93 Dołączył: 5.07.2005 Skąd: Olsztyn ![]() |
http://pl.wikipedia.org/wiki/Avatar inaczej ten viper (samochód) co jest obok mojego posta ;]
Ten post edytował kwiateusz 31.07.2006, 20:37:17 |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 26 Pomógł: 0 Dołączył: 11.09.2005 Ostrzeżenie: (0%) ![]() ![]() |
Acha.
![]() PS Rozpoznaje vipery ![]() |
|
|
![]()
Post
#10
|
|
![]() Developer Grupa: Moderatorzy Postów: 2 844 Pomógł: 20 Dołączył: 25.11.2003 Skąd: Olkusz ![]() |
Możesz sobie popatrzeć tutaj
http://hwao.be/blog/2006/05/02/monitorowanie-obiektu/ |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 26 Pomógł: 0 Dołączył: 11.09.2005 Ostrzeżenie: (0%) ![]() ![]() |
Dziekuje za link.
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 06:23 |