(PHP 4 >=4.0.1, PHP 5, PHP 7, PHP 8)
Créée par unserialize(),
lorsque l'on essaie de désérialiser une classe non définie
ou une classe non listée dans les allowed_classes
du tableau options de unserialize().
Avant PHP 7.2.0, utiliser is_object() sur la
classe __PHP_Incomplete_Class retournait false.
À partir de PHP 7.2.0, true sera retourné.
Cette classe n'a pas de propriétés ou de méthodes par défaut.
Lorsqu'elle est créée par unserialize(),
en plus de toutes les propriétés et valeurs désérialisées
l'objet aura une propriété __PHP_Incomplete_Class_Name
qui contiendra le nom de la classe désérialisée.
| Version | Description |
|---|---|
| 8.0.0 |
Cette classe est désormais final.
|
Exemple #1 Créée par unserialize()
<?php
class MyClass
{
public string $property = "myValue";
}
$myObject = new MyClass;
$foo = serialize($myObject);
// désérialise tous les objets en objets __PHP_Incomplete_Class
$disallowed = unserialize($foo, ["allowed_classes" => false]);
var_dump($disallowed);
// désérialise tous les objets en objet __PHP_Incomplete_Class sauf ceux des classes MyClass2 et MyClass3
$disallowed2 = unserialize($foo, ["allowed_classes" => ["MyClass2", "MyClass3"]]);
var_dump($disallowed2);
// désérialise une classe non définie en objet __PHP_Incomplete_Class
$undefinedClass = unserialize('O:16:"MyUndefinedClass":0:{}');
var_dump($undefinedClass);L'exemple ci-dessus va afficher :
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"
}