A classe __PHP_Incomplete_Class
(PHP 4 >=4.0.1, PHP 5, PHP 7, PHP 8)
Introdução
Criada por unserialize()
ao tentar desserializa uma classe indefinida
ou uma classe não listada nas classes permitidas na chave allowed_classes
do array do parâmetro options
da função unserialize().
Antes do PHP 7.2.0, usar is_object() na classe
__PHP_Incomplete_Class retornaria false
.
A partir do PHP 7.2.0, será retornado true
.
Resumo da classe
class __PHP_Incomplete_Class
{
}
Esta classe não tem propriedades ou métodos padrões.
Quando criada por unserialize(),
além de todas as propriedades e valores desserializados,
o objeto terá uma propriedade __PHP_Incomplete_Class_Name
que conterá o nome da classe desserializada.
Exemplos
Example #1 Criada por unserialize()
<?php
class MyClass
{
public string $property = "myValue";
}
$myObject = new MyClass;
$foo = serialize($myObject);
// desserializa todos os objetos em objetos __PHP_Incomplete_Class
$disallowed = unserialize($foo, ["allowed_classes" => false]);
var_dump($disallowed);
// desserializa todos os objetos em objetos __PHP_Incomplete_Class exceto os de MyClass2 e MyClass3
$disallowed2 = unserialize($foo, ["allowed_classes" => ["MyClass2", "MyClass3"]]);
var_dump($disallowed2);
// desserializa classe indefinida em objeto __PHP_Incomplete_Class
$undefinedClass = unserialize('O:16:"MyUndefinedClass":0:{}');
var_dump($undefinedClass);
O exemplo acima produzirá:
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" }