Documentation

SerializableImplementation

SerializableImplementation

Das Trait definiert eine Implementierung des \Serializable Interfaces und kann in Zusammenspiel mit der Verwendung des \Serializable-Interfaces angewendet werden.

Um eine fertige Implementierung umzusetzen, reicht es das Interface einzubinden und das Trait mittelse use anzugeben. Wird in der Klasse, die den Trait verwendet die Konstante SERIALVERSION definiert, so kann darüber die Version der Serialisierung geprüft werden. Wird die Konstante nicht definiert, so wird immer die Version 1 genommen. In allen von Alvine\Core\Alvine abgeleiteten Klassen ist die Konstante definiert.

Lambdafunktionen

Werden Lambdafunktionen definiert, so kann das Objekt nicht mehr serialisiert werden. Der Aufruf von serialize würde in so einem Fall eine PHP Exception werfen. Die Lambdafunktion wird nicht im Scope des Objekts ausgeführt. Es steht als erster Parameter allerdings eine Referenz auf das Objekt zur Verfügung.
class NewClass {
    use SerializableImplementation;

    const SERIALVERSION = 1;
    // ... code
}

Volatile Werte

Als Besonderheit können Eigenschaften mit der Vorsilbe volatile von der Serialisierung ausgeschlossen werden. Im folgenden Beispiel wird $index serialisiert, $volatileIndex jedoch nicht.
class NewClass {
    use SerializableImplementation;
    protected $volatileIndex = 1;
}

Versionsprüfung

Abgeleitetet Klassen müssen, wenn Sie die Prüfung der Version nutzen wollen, die Methode Alvine::checkAndAdjustSerialisation() überschreiben. Im folgenden Sequenzdiagramm ist der Aufruf von Alvine::checkAndAdjustSerialisation() beschrieben. A -> B: unserialize2() activate A B -> B: checkAndAdjustSerialisation(); note right Die Methode checkAndAdjustSerialisation ueberprueft ob die Version des Datenstroms mit der Klasse uebereinstimmt. end note

activate B B --> A

Fehler beim Serialisieren

Beim Serialisieren können mehrere Fehler auftreten. Einige werden über eine UnserializeException abgefangen, andere direkt von PHP. In den Fällen in denen PHP den Fehler erkennt (z.B. wenn die gewünschte Klasse nicht verfügbar ist), dann wird eine PHP \Exception geworfen.

Debugging

Sollten beim Ausführen von unserialise die Fehlermeldung Class __PHP_Incomplete_Class has no unserializer kommen, dass die Klasse fehlt, kann mit folgendem Konstrukt der Klassenname ermittelt werden:

\ini_set('unserialize_callback_func', 'debug_unserialize');
function debug_unserialize($classname) {
  die(var_dump($classname));
}
Tags
category

Framework

author

schukai GmbH [email protected]

license

http://alvine.io/license/ Licence

link

Alvine

since
20110917

Table of Contents

Properties

$hasAssociatedProperties  : boolean
$hasVolatileProperties  : boolean

Methods

__serialize()  : array<string|int, mixed>
Serialization of the object and data. In the serialized object also stores meta-information for matching.
__unserialize()  : void
hasAssociatedProperties()  : boolean
Check if the object has associative properties
hasVolatileProperties()  : boolean
Prüfen ob das Objekt volatile Eigenschaften besitzt
checkAndAdjustSerialisation()  : array<string|int, mixed>
Dealing with versions

Properties

Methods

__serialize()

Serialization of the object and data. In the serialized object also stores meta-information for matching.

public __serialize() : array<string|int, mixed>

If a derived class is not to be serializable, then this * method must be overridden and throw an exception. this method must be overridden and throw an exception.

Properties starting with volatile or associated. are handled separately. Properties with prefix volatile are not serialized. For properties with the prefix associated, only the * ID of the object is serialized. ID of the object is serialized. If no object is stored in the property is stored in the property, a TypeException is thrown.

Tags
see
https://php.watch/versions/8.1/serializable-deprecated
Return values
array<string|int, mixed>

checkAndAdjustSerialisation()

Dealing with versions

protected checkAndAdjustSerialisation(array $serialization) : array<string|int, mixed>

This method checks an object and ideally repairs older copies. If an old copy cannot be restored be restored, an exception is thrown.

This method must be overridden by the derived classes. be overridden. In the derived class, * the parent method should be called. the parent method should be called.

Parameters
$serialization : array

Daten des serialisiertes Objekts

Tags
throws
UnserializeException

Keine Übereinstimmung

Return values
array<string|int, mixed>

        
On this page

Search results