phpbar.de logo

Mailinglisten-Archive

[php] Serialisierung einer Klasse

[php] Serialisierung einer Klasse

Sebastian Mendel lists at sebastianmendel.de
Die Jun 10 10:19:20 CEST 2008


Nico Haase schrieb:
> Hallo Yannik,
> 
> Yannik Hampe schrieb:
>>> function __sleep() {
>>> 	return( array_keys( get_object_vars( &$this ) ) );
>>> }
>>>
>>> Nun muckelt das aber auf einigen Servern mit folgender Fehlermeldung rum:
>>>
>>> Warning: Call-time pass-by-reference has been deprecated - argument passed 
>>> by value; If you would like to pass it by reference, modify the declaration 
>>> of get_object_vars(). If you would like to enable call-time 
>>> pass-by-reference, you can set allow_call_time_pass_reference to true in 
>>> your INI file. However, future versions may not support this any longer
>>>
>>> Klappt die Serialisierung auch, wie ich mir das denke, wenn ich das $this 
>>> als Variable weiterreiche? An sich müsste es doch gehen, oder?
>> Wie wäre es, wenn du einfach dieses & da entfernst? Wieso hast du das 
>> überhaupt da hingeschrieben?
> 
> http://de2.php.net/manual/en/language.oop5.magic.php#83556 enthält bspw. 
> ebendas. Ich hatte es aber aus einem anderen Kommentar auf den PHP-Seiten. 
> Gibts da noch Einsprüche? Irgendwas werden sich ja auch die Leute gedacht 
> haben, die da eben das & eingebaut haben.

hat er sich vielleicht, aber auf jeden Fall hat er falsch gedacht,

das & bei einer Variable dient dazu die Referenz für diese Variable und 
nicht den Inhalt selber zu verwenden/übergeben, ob an eine Funktion der 
Inhalt oder eine Referenz übergeben wird, wird aber nicht beim 
Funktionsaufruf bestimmt, sondern bei der Definition der Funktion, also

hier:

function myFunc(&$var);

und _nicht_:

myFunc(&$var);


und Objekte werden sowieso immer als Referenz übergeben (in PHP 5).


-- 
Sebastian Mendel

php::bar PHP Wiki   -   Listenarchive