![]() |
![]() ![]() |
![]() |
![]() ![]()
Post
#1
|
|
![]() Grupa: Developerzy Postów: 823 Pomógł: 12 Dołączył: 18.12.2005 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Mam klasę, która dziedziczy z ArrayAccess, mimo tego nie mogę użyć obiektu jako tablicy. Metoda offsetGet() returnuje wartość z __get():
Otrzymuję błąd: Kod Fatal error: Objects used as arrays in post/pre increment/decrement must return values by reference [...] Kawałek kodu, który wywołuje błąd:
Wszystkie klucze istnieją, aby to działało, muszę zebrać wartości instancji jako tablicę (wtedy mogę czytać z $aConfig) i zapisać w zmiennej, co jest dla mnie niewygodne:
Serdecznie dziękuję za support. P.S. Szukałem, ale znalazłem jeden wątek, w którym nie do końca wyjaśniono co jest nie tak. -------------------- Portfolio: Vgroup.pl | athlan.pl | Test.php.pl - sprawdź się z wiedzy o PHP i ułóż własne pytania!
Pomogłem? Kliknij |
|
|
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
1. W PHP nie ma takiej klasy jak ArrayAccess, więc nie możesz po niej dziedziczyć (no chyba, że masz swoją). Jeśli jednak to wynik Twojej pomyłki i miałeś na myśli to, że implementujesz interfejs ArrayAccess to ...
2. ... interfejs ArrayAccess posiada cztery metody. Jak masz zaimplementowane pozostałe poza offsetGet()? |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 24 Pomógł: 3 Dołączył: 25.08.2005 Ostrzeżenie: (0%) ![]() ![]() |
... i co zwraca __get()?
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Moze dodaj & jako znaczik ze zwracasz przez referencje do offsetGet i __get().
Bo komunikat bledu ... hmm... troche dziwny z ta inkrementacja. $oCostam->x ++; to by pasowalo ale do porownania?? -------------------- Nie lubię jednorożców.
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Developerzy Postów: 823 Pomógł: 12 Dołączył: 18.12.2005 Ostrzeżenie: (0%) ![]() ![]() |
Dodam jeszcze, że problem jest tylko na Linuxie (ale to standard, win to wiadomo jakie g*
![]() Cytat 1. W PHP nie ma takiej klasy jak ArrayAccess, więc nie możesz po niej dziedziczyć (no chyba, że masz swoją). Jeśli jednak to wynik Twojej pomyłki i miałeś na myśli to, że implementujesz interfejs ArrayAccess to ... Dzięki za poprawkę, chodziło mi oczywiście o interfejs. Cytat 2. ... interfejs ArrayAccess posiada cztery metody. Jak masz zaimplementowane pozostałe poza offsetGet()? Wszystkie odnoszą się do metod magicznych __. Np: offsetGet() z __get() (i analogicznie pozostałe: set, isset [exists], unset). Wycinka klasy, z której dziedziczy Vframe_Config, w zasadzie Vframe_Config odpowiada tylko za zainicjownaie silnika i pobranie danych, wkłada je w formie tablicy do atrybutu $_aAttributes:
Zrobiłem więc mały test poza środowiskiem frameworka, żeby być pewien na 100%, że to jest nie jest jego wina:
Nie działa pętla foreach. (przepraszam za wprowadzenie w błąd w pierwszym poście). Dzieje się tylko przy pętlach. -------------------- Portfolio: Vgroup.pl | athlan.pl | Test.php.pl - sprawdź się z wiedzy o PHP i ułóż własne pytania!
Pomogłem? Kliknij |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 24 Pomógł: 3 Dołączył: 25.08.2005 Ostrzeżenie: (0%) ![]() ![]() |
Apache 2.2 i PHP 5.3a2 na XP:
Kod No Not extsis Number 1 Number 2 Apache 1.3.37 i PHP 5.2.2 na jakikolwiek-linux-jest-na lap.pl: Kod No Not extsis Number 1 Number 2 Musisz mieć zbugowaną wersję PHP ![]() |
|
|
![]()
Post
#7
|
|
![]() Grupa: Developerzy Postów: 823 Pomógł: 12 Dołączył: 18.12.2005 Ostrzeżenie: (0%) ![]() ![]() |
Wersja PHP 5.2.0-8+etch11 jest zbugowana. Na serwie mam juz 5.2.2 i śmiga. Otrzymujesz jak najbardziej zasłużone pomógł.
-------------------- Portfolio: Vgroup.pl | athlan.pl | Test.php.pl - sprawdź się z wiedzy o PHP i ułóż własne pytania!
Pomogłem? Kliknij |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 13.06.2025 - 02:52 |