![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Hej!
Mam pewien problem. W jaki sposób wykonać metodę __set($param, $value) dla składowej klasy będącej tablicą? Może podam na przykładzie:
Co w rezultacie daje:
W jaki sposób zmienić wartość $this->array['field']? PS: wiem, że można to zrobić tworząc osobną metodę zmieniającą element tablicy ale czy da się to samo osiągnąć korzystając z __set()? Ten post edytował phpion.com 2.06.2007, 11:00:50 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 698 Pomógł: 3 Dołączył: 28.03.2004 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Raczej nie o to chodziło. Po pierwsze $this->array['cos'] nie zadziała, bo tablica jest prywatna. Nawet jeżeli przeciążysz __get, to żeby dostać się do tablicy w ten sposób musisz zapisać go tak:
Jeżeli chcesz odwołać się do elementu z tablicy poprzez $this->cos, to wtedy przeciążasz funkcję tak:
Ale wtedy nie odwołasz się do atrybutów obiektu. Jeżeli spróbujesz zrobić coś takiego:
To wywali: Kod Notice: Indirect modification of overloaded property SomeClass::$array has no effect Jeżeli przeciążysz __set inaczej, to nie wydostaniesz się poza tablicę. Dyskusja wyglądałaby trochę inaczej, gdyby nie ten modyfikator przy tablicy... Ten post edytował Ludvik 2.06.2007, 23:07:09 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 793 Pomógł: 32 Dołączył: 23.11.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Raczej nie o to chodziło. Po pierwsze $this->array['cos'] nie zadziała, bo tablica jest prywatna. Przecież $this używasz tylko w obiekcie, więc to że jest prywatna akurat nie ma nic do znaczenia. Ech nie chce mi się pisać...
EDIT: głupia kontrola danych (i zmiana) jest na tej stronie Ten post edytował Sedziwoj 2.06.2007, 23:36:26 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 3.10.2025 - 11:58 |