![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 239 Pomógł: 0 Dołączył: 2.06.2011 Ostrzeżenie: (0%) ![]() ![]() |
Mam kod:
chciałem, aby z automatu atrybut o nazwie "atrybut" zmieniał wartość na "test", ale się nie udaje - strona pokazuje "xyz" używam webserva, na którym mam zainstalowane PHP 5.2.5 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
1. Jeżeli istnieje zadeklarowana właściwość $atrybut, __set() nie zostanie wywołane - metoda ta wywoływana jest przy próbie zapisu do nieistniejącej właściwości.
2. Po co w ogóle używasz tutaj __set()? |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 239 Pomógł: 0 Dołączył: 2.06.2011 Ostrzeżenie: (0%) ![]() ![]() |
uczę się i staram się to zrozumieć
przerobiłem kod, spójrz na niego:
w tym momencie atrybut "atrybut" faktycznie nie istnieje - gdy go używam, strona jest pusta... |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 872 Pomógł: 94 Dołączył: 31.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
echo $a->atrybut wywola metode __get(), a nie __set().
Ten post edytował lukaskolista 3.07.2012, 08:31:44 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 239 Pomógł: 0 Dołączył: 2.06.2011 Ostrzeżenie: (0%) ![]() ![]() |
teraz wywoła __set, ale i tak przyjmie wartość "5", a nie "test"... |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 879 Pomógł: 189 Dołączył: 14.06.2006 Skąd: Bytom Ostrzeżenie: (0%) ![]() ![]() |
Cytat 1. Jeżeli istnieje zadeklarowana właściwość $atrybut, __set() nie zostanie wywołane - metoda ta wywoływana jest przy próbie zapisu do nieistniejącej właściwości. Czyli nie wywoła __set. |
|
|
![]()
Post
#7
|
|
![]() Grupa: Moderatorzy Postów: 4 069 Pomógł: 497 Dołączył: 11.05.2007 Skąd: Warszawa ![]() |
daj private lub protected dla $atrybut.
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 165 Pomógł: 20 Dołączył: 2.03.2006 Ostrzeżenie: (0%) ![]() ![]() |
__set() przy $object->costam = bleble;
__get() przy echo $object->costam; -------------------- |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 239 Pomógł: 0 Dołączył: 2.06.2011 Ostrzeżenie: (0%) ![]() ![]() |
ciągle tego nie rozumiem
aktualnie mam coś takiego:
i nadal pokazuje się "5", a chcę, aby pokazało się "test"... nadal nie rozumiem, do czego służy __set, może ktoś mi podać mega szczupły kod, który wyjaśni działanie? Ten post edytował marcinek37 3.07.2012, 16:07:41 |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
1. http://php.net/manual/en/language.oop5.overloading.php
2. "__set() is run when writing data to inaccessible properties." 3. Właściwość jest dostępna gdy a) jest zadeklarowana ![]() 4. Teraz już chyba oczywiste jest dlaczego nie wywołuje Ci się __set(). Cytat nadal nie rozumiem, do czego służy __set Można by powiedzieć, że właściwie nie posiada praktycznego zastosowania.
Ten post edytował Crozin 3.07.2012, 16:16:12 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 11:54 |