Pytanie odnośnie magicznej metody __set_state()

0

Witam wszystkich. Aktualnie przerabiam metody magiczne w php. Generalnie wszystko rozumiem oprócz jednej rzeczy. Doszedłem do metody __set_state. W tutorialu napisano tak :

Jest to metoda statyczna, która jest wywoływana w momencie użycia na klasie funkcji var_export(). Przyjmuje jeden parametr, zawierający eksportowane właściwości w formacie:

array('wlasciwosc1' => wartosc, 'wlasciwosc2' => wartosc, …)

No i o.k wszystko jasne. Tylko w takim razie dlaczego poniższy kod:

<?php

class Cwiczenia
{
	public $wartosc1 = 19;
	public $wartosc2 = 12;
	
	public static function __set_state($Tablica)
	{
		echo 'Uruchomiłeś magiczną metodę set_state';
	}
}

 $TestowyObiekt = new Cwiczenia();
 
 var_export($TestowyObiekt);

?> 

Nie powoduje wyświetlenia Uruchomiłeś magiczną metodę set_state, skoro ewidentnie użyłem funkcji var_export...?

0

U mnie działa :)
http://ideone.com/wfFBO5

0

Nie wiem gdzie Ty to widzisz. Pogłówkowałem trochę i wychodzi na to, że ta metoda magiczna nie jest uruchamiana w momencie odpalania var_export tylko jeżeli ją zdefiniujemy to var_export zamiast standardowego output'u zwróci stringa zawierającego kod php wywołujący statyczną metodę __set_state dla danej klasy. Trochę dziwne bo przeczesałem chyba ze 4 tutoriale i wszędzie pisało inaczej...

0

gdzie Ty widzisz takie wyjaśnienia? czytaj bezpośrednio manual php to nie będziesz czytał bzdur

tu masz przykład użycia i wytłumaczenie
http://php.net/manual/en/language.oop5.magic.php#object.set-state

0

** This static method is called for classes exported by var_export() since PHP 5.1.0.**

Method is called czyli metoda jest wywoływana. No, ale tak się nie dzieje właśnie. Metoda nie jest wywoływana gdy użyjemy na obiekcie var_export.

1 użytkowników online, w tym zalogowanych: 0, gości: 1