11.07.12
PHP Incomplete Class – Kleine Ursache große Wirkung

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:
- PHP: RSS Feed Reader in 10 Minuten
- PHP: Einen Hash-Wert eines beliebigen Objektes erzeugen.
- Error at offset x of y bytes – Objekte sicher serialisieren und speichern
- PHP: Alle Fehlermeldungen anzeigen
- PHP Memcache Server einrichten
Von: admin Tags: php, tipp, Web
Sag deine Meinung
Die E-Mail Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.
Suche
Spannende Themen
Bleibe auf dem Laufenden