(PHP 4 >=4.0.1, PHP 5, PHP 7, PHP 8)
Створюється функцією unserialize() у спробі розпакувати
невизначений клас або той, що відсутній у списку
allowed_classes
параметра options
функції unserialize().
До PHP 7.2.0, застосування is_object() до класу
__PHP_Incomplete_Class повертало false
.
Починаючи з PHP 7.2.0, повертається true
.
Цей клас не має стандартних властивостей або методів. Після створення
функцією unserialize(), об'єкт матиме розпаковані
властивості і значення, а також властивість
__PHP_Incomplete_Class_Name
, котра міститиме назву
розпакованого класу.
Приклад #1 Створення за допомогою unserialize()
<?php
class MyClass
{
public string $property = "myValue";
}
$myObject = new MyClass;
$foo = serialize($myObject);
// розпакувати всі об'єкти як __PHP_Incomplete_Class
$disallowed = unserialize($foo, ["allowed_classes" => false]);
var_dump($disallowed);
// розпакувати всі об'єкти, окрім MyClass2 та MyClass3, як об'єкт __PHP_Incomplete_Class
$disallowed2 = unserialize($foo, ["allowed_classes" => ["MyClass2", "MyClass3"]]);
var_dump($disallowed2);
// розпакувати невизначений клас як об'єкт __PHP_Incomplete_Class
$undefinedClass = unserialize('O:16:"MyUndefinedClass":0:{}');
var_dump($undefinedClass);
Поданий вище приклад виведе:
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" }