Benutzer-Werkzeuge

Webseiten-Werkzeuge


php:serialize

Serialisieren von Objekten

Um den aktuellen Zustand eines Objektes mit allen Eigenschaften in einem Datenbankfeld speichern zu können kann es zu einer Binär-Datei serialisiert werden.

Objekt in eine Binär-Datei umwandeln:

$binary = serialize( $obj );

Binär-Datei in ein Objekt zurückwandeln:

$obj = unserialize( $binary );

Hinweise:

  • Es ist auch möglich, ein Array mit beliebig vielen Objekten zu serialisieren.
  • beim Deserialisieren durch unserialize wird der Konstruktor der Klasse NICHT aufgerufen
  • Bei Änderung der Namen oder Sichtbarkeit der Objekt-Variablen ist die Nutzung des serialsierten Objektes nicht mehr möglich.
  • Beim Speichern in eine mySQL-Datenbank sollte ein Feld vom Typ „BLOB“ verwendet werden.

Troubleshooting

Sollte die Zurückwandlung eines serialisierten Strings nicht mehr möglich sein gibt die Funktion „unserialize“ lediglich den Rückgabewert von FALSE zurück. Die genaue Position im String, an der das Problem auftritt, wird in einer NOTICE ausgegeben. Mit dem folgenden PHP-Code ist es in der Entwicklung möglich, sich die Stelle anzeigen zu lassen:

$model = unserialize( $value );
 
if( $model === false ) // wenn ein Fehler aufgetreten ist
{
	ini_set( 'display_errors', 1 ); // Fehlermeldungen anzeigen
	error_reporting( E_NOTICE ); // nur NOTICE ausgeben
	$csvModel = unserialize( $value ); // nochmal versuchen
	echo $value;
	exit;
}
php/serialize.txt · Zuletzt geändert: 2021/03/26 12:10 von webproducer