# Die Klasse __PHP_Incomplete_Class

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

## Einführung

Wird von der Funktion unserialize() erzeugt, wenn versucht wird, eine undefinierte Klasse zu deserialisieren oder eine Klasse, die nicht in `allowed_classes` des `options`-Arrays von unserialize() aufgeführt ist.

Vor PHP 7.2.0 gab die Funktion is_object() `false` zurück, wenn sie auf ein Objekt der Klasse __PHP_Incomplete_Class angewendet wurde. Seit PHP 7.2.0 gibt sie `true` zurück.

## Klassenbeschreibung

#[\AllowDynamicProperties]
final class __PHP_Incomplete_Class {
}

Diese Klasse hat keine Standardeigenschaften oder -methoden. Wenn sie mittels unserialize() erzeugt wird, hat sie zusätzlich zu allen deserialisierten Eigenschaften und Werten die Eigenschaft `__PHP_Incomplete_Class_Name`, die den Namen der deserialisierten Klasse enthält.

## Changelog

Version | Beschreibung
--- | ---
8.0.0 | Diese Klasse ist nun `final`.

## Beispiele

Beispiel #1 Erzeugt durch unserialize()

    <?php

    class MyClass
    {
        public string $property = "myValue";
    }

    $myObject = new MyClass;

    $foo = serialize($myObject);

    // Desialisiert alle Objekte zu __PHP_Incomplete_Class-Objekten
    $disallowed = unserialize($foo, ["allowed_classes" => false]);

    var_dump($disallowed);

    // Deserialisiert alle Objekte außer denen von MyClass2 und MyClass3
    // zu __PHP_Incomplete_Class-Objekten
    $disallowed2 = unserialize($foo, ["allowed_classes" => ["MyClass2", "MyClass3"]]);

    var_dump($disallowed2);

    // Deserialisiert die undefinierte Klasse zu einem __PHP_Incomplete_Class-Objekt
    $undefinedClass = unserialize('O:16:"MyUndefinedClass":0:{}');

    var_dump($undefinedClass);

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

    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