__PHP_Incomplete_Class クラス
(PHP 4 >=4.0.1, PHP 5, PHP 7, PHP 8)
はじめに
未定義のクラスや、
unserialize() の options
配列の allowed_classes
のリストに入っていなかったクラスを
アンシリアライズしようとした場合に、
unserialize() が生成します。
PHP 7.2.0 より前のバージョンでは、
__PHP_Incomplete_Class
に対して is_object()
を呼び出すと false
を返していました。
PHP 7.2.0 以降では true
を返します。
クラス概要
class __PHP_Incomplete_Class
{
}
このクラスはデフォルトのプロパティやメソッドを持っていません。
unserialize() がこのクラスを生成した場合、
アンシリアライズされたプロパティやオブジェクトの値について、
アンシリアライズされたクラス名を含む
__PHP_Incomplete_Class_Name
プロパティを持ちます。
例
例1 unserialize() によって生成されるクラス
<?php
class MyClass
{
public string $property = "myValue";
}
$myObject = new MyClass;
$foo = serialize($myObject);
// unserializes all objects into __PHP_Incomplete_Class objects
$disallowed = unserialize($foo, ["allowed_classes" => false]);
var_dump($disallowed);
// unserializes all objects into __PHP_Incomplete_Class objects except those of MyClass2 and MyClass3
$disallowed2 = unserialize($foo, ["allowed_classes" => ["MyClass2", "MyClass3"]]);
var_dump($disallowed2);
// unserializes undefined class into __PHP_Incomplete_Class object
$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" }
+add a note
User Contributed Notes
There are no user contributed notes for this page.
↑ and ↓ to navigate •
Enter to select •
Esc to close
Press Enter without
selection to search using Google