PHP 8.4.1 Released!

La classe __PHP_Incomplete_Class

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

Introduction

Créer par unserialize(), lorsque l'on essaie de désérialiser une classe non définie ou une classe non listée dans les allowed_classes du tableau options de unserialize().

Avant PHP 7.2.0, utiliser is_object() sur la classe __PHP_Incomplete_Class retournait false. À partir de PHP 7.2.0, true sera retourné.

Synopsis de la classe

class __PHP_Incomplete_Class {
}

Cette classe n'a pas de propriétés ou de méthodes par défaut. Lorsqu'elle est créée par unserialize(), en plus de toutes les propriétés et valeurs désérialisées l'objet aura une propriété __PHP_Incomplete_Class_Name qui contiendra le nom de la classe désérialisée.

Exemples

Exemple #1 Created by unserialize()

<?php

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

$myObject = new MyClass;

$foo = serialize($myObject);

// désérialise tous les objet en objet __PHP_Incomplete_Class
$disallowed = unserialize($foo, ["allowed_classes" => false]);

var_dump($disallowed);

// désérialise tous les objets en objet __PHP_Incomplete_Class sauf ceux des classes MyClass2 et MyClass3
$disallowed2 = unserialize($foo, ["allowed_classes" => ["MyClass2", "MyClass3"]]);

var_dump($disallowed2);

// désérialise une classe non définie en objet __PHP_Incomplete_Class
$undefinedClass = unserialize('O:16:"MyUndefinedClass":0:{}');

var_dump($undefinedClass);

L'exemple ci-dessus va afficher :


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