(PHP 4 >=4.0.1, PHP 5, PHP 7, PHP 8)
Wird von der Funktion unserialize() erzeugt, wenn
versucht wird, eine undefinierte Klasse zu deserialisieren oder eine
Klasse, die nicht in allowed_classes
des
options
-Arrays von unserialize()
aufgeführt ist.
Vor PHP 7.2.0 gab die Funktion is_object() false
zurück, wenn sie auf ein Objekt der Klasse
__PHP_Incomplete_Class angewendet wurde.
Seit PHP 7.2.0 gibt sie true
zurück.
Diese Klasse hat keine Standardeigenschaften oder -methoden.
Wenn sie mittels unserialize() erzeugt wird, hat sie
zusätzlich zu allen deserialisierten Eigenschaften und Werten die
Eigenschaft __PHP_Incomplete_Class_Name
, die den Namen
der deserialisierten Klasse enthält.
Beispiel #1 Erzeugt durch unserialize()
<?php
class MyClass
{
public string $property = "myValue";
}
$myObject = new MyClass;
$foo = serialize($myObject);
// Desialisiert alle Objekte zu __PHP_Incomplete_Class-Objekten
$disallowed = unserialize($foo, ["allowed_classes" => false]);
var_dump($disallowed);
// Deserialisiert alle Objekte außer denen von MyClass2 und MyClass3
// zu __PHP_Incomplete_Class-Objekten
$disallowed2 = unserialize($foo, ["allowed_classes" => ["MyClass2", "MyClass3"]]);
var_dump($disallowed2);
// Deserialisiert die undefinierte Klasse zu einem __PHP_Incomplete_Class-Objekt
$undefinedClass = unserialize('O:16:"MyUndefinedClass":0:{}');
var_dump($undefinedClass);
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
object(__PHP_Incomplete_Class)#2 (2) { ["__PHP_Incomplete_Class_Name"]=> string(7) "MyClass" ["property"]=> string(7) "myValue" } object(__PHP_Incomplete_Class)#3 (2) { ["__PHP_Incomplete_Class_Name"]=> string(7) "MyClass" ["property"]=> string(7) "myValue" } object(__PHP_Incomplete_Class)#4 (1) { ["__PHP_Incomplete_Class_Name"]=> string(16) "MyUndefinedClass" }