# A classe __PHP_Incomplete_Class

(PHP 4 >=4.0.1, PHP 5, PHP 7, PHP 8)

## Introdução

Criada por unserialize() ao tentar desserializar 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

#[\AllowDynamicProperties]
final 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.

## Registro de Alterações

Versão | Descrição
--- | ---
8.0.0 | Esta classe agora é `final`.

## Exemplos

Exemplo #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 uma 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"
    }

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open