![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 219 Pomógł: 5 Dołączył: 18.07.2006 Skąd: Piekary Śląskie Ostrzeżenie: (0%) ![]() ![]() |
Jak wiadomo ukazała się niedawno wersja 5.2.0 php
Zainstalowałem ją czym prędzej ale napotkałem problem. Jest klasa:
Do tej pory gdy robiłem
otrzymywałem efekt zgodny z zamierzeniem (wiadomo, że klucz $this->zmienne['dane'] powinien już wcześniej istnieć i istnieje). Metoda __get zwraca referencję do odpowiedniego obszaru w pamięci i przypisywana jest tam wartość 'wartosc'. W php 5.1.x działa bez problemu. W php 5.2.0 nie przypisuje. Spotkał się jeszcze ktoś z tym. Dodam, że generalnie metody magiczne działają. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Testuje na 5.2.0 error_reporting( E_ALL | E_STRICT)
1.
Kod Notice: Undefined index: dane in /services/php.dev/www/test/ref_do_tabli_z__get.php on line 33 to jasne -- uzywa __get()'a a taki index nie istnieje a przypisanie
nie zadziala Kod Notice: Indirect modification of overloaded property test::$dane has no effect in /services/php.dev/www/test/ref_do_tabli_z__get.php on line 37 2.
wynik:
tobie to sie nie pojawia? 3. ta sama klasa ( z __set())
wynik Kod object(test)#1 (1) { ["zmienne:private"]=> array(0) { } } object(test)#1 (1) { ["zmienne:private"]=> array(1) { ["dane"]=> string(3) "aaa" } } object(test)#1 (1) { ["zmienne:private"]=> array(1) { ["dane"]=> array(1) { [0]=> string(3) "aaa" } } } bool(true) object(test)#1 (1) { ["zmienne:private"]=> array(2) { ["dane"]=> array(1) { [0]=> string(3) "aaa" } ["xxx"]=> NULL } } Linki http://framework.zend.com/issues/browse/ZF-460 http://www.derickrethans.nl/overloaded_properties_get.php |
|
|
![]() ![]() |
![]() |
Aktualny czas: 13.10.2025 - 11:03 |