La clase __PHP_Incomplete_Class
En esta página
Introducción#
Creada por unserialize al intentar deserializar una clase no definida o una clase que no está incluida en el allowed_classes de unserialize en el array options.
Antes de PHP 7.2.0, usar is_object en la clase __PHP_Incomplete_Class devolvería false. A partir de PHP 7.2.0, se devolverá true.
Sinopsis de la clase#
#[\AllowDynamicProperties]
final
__PHP_Incomplete_Class
Esta clase no tiene propiedades o métodos predeterminados. Cuando es creada por unserialize, además de todas las propiedades y valores deserializados el objeto tendrá una propiedad __PHP_Incomplete_Class_Name que contendrá el nombre de la clase deserializada.
Historial de cambios#
| Versión | Descripción |
|---|---|
| 8.0.0 | Esta clase ahora es final. |
Ejemplos#
Creada por unserialize
<?php
class MyClass
{
public string $property = "myValue";
}
$myObject = new MyClass;
$foo = serialize($myObject);
// deserializa todos los objetos en objetos __PHP_Incomplete_Class
$disallowed = unserialize($foo, ["allowed_classes" => false]);
var_dump($disallowed);
// deserializa todos los objetos en objetos __PHP_Incomplete_Class excepto aquellos de MyClass2 y MyClass3
$disallowed2 = unserialize($foo, ["allowed_classes" => ["MyClass2", "MyClass3"]]);
var_dump($disallowed2);
// deserializa una clase no definida en un objeto __PHP_Incomplete_Class
$undefinedClass = unserialize('O:16:"MyUndefinedClass":0:{}');
var_dump($undefinedClass);
El ejemplo anterior mostrará:
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"
}