11.07.12

PHP Incomplete Class – Kleine Ursache große Wirkung

PHP Incomplete Class

Wenn man die Funktionen serialize bzw. unserialize benutzt, kann es dazu kommen, dass man teilweise unklare Fehlermeldungen erhält und var_dump einem verrät, dass das deserialisierte Objekt vom Typ “__PHP_Incomplete_Class” ist.

Im ersten Moment ist man vielleicht versucht zu glauben, dass die Daten vielleicht beschädigt sind, jedoch rührt dieses Problem daher, dass PHP den Typ der Klasse nicht kennt. Es gibt nun zwei einfache Möglichkeiten dies zu beheben:

Klasse inkludieren

Die einfachste Lösung ist es einfach die Klasse, welche deserialisiert werden soll, zu inkludieren. Vermutlich rührt der Fehler meistens auch daher, dass man schlicht vergessen hat, sie zu inkludieren.

stdClass

Hat man beim Deserialisieren nicht die Möglichkeit die entsprechende Klasse zu inkludieren bzw. möchte man sichergehen, dass die Daten immer geladen werden können, kann man die Klasse beim Serialisieren in eine stdClass konvertieren, die immer deserialisiert werden kann.

$tmp = json_encode($class);
$class = json_decode($tmp);

Dabei muss man jedoch bedenken, dass nur öffentliche Member serialisiert werden und, dass natürlich auch die Methoden der ursprünglichen Klasse nicht mehr zur Verfügung stehen.

Weitere Informationen

Für alle die sich das ganze aus der Nähe ansehen wollen, habe ich das Ganze mit ein paar einfachen Beispielen veranschaulicht: PHP Incomplete Class Beispiel (30).

Zusätzliche Informationen findet man auch in den Benutzerkommentaren der PHP-Dokumentation: http://php.net/manual/de/function.unserialize.php

Das könnte Sie auch interessieren:


Von: Tags: php, tipp, Web

Sag deine Meinung

Die E-Mail Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.






Suche

Bleibe auf dem Laufenden

Mit dem Newsletter verpasst man nie mehr neue Beiträge und wird trotzdem nicht zugespammt.