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

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.

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

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top