(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"
}