PHP 8.3.21 Released!

La clase __PHP_Incomplete_Class

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

Introducción

Creada por unserialize(), cuando se intenta deserializar una clase no definida o una clase no listada en los allowed_classes del array options de unserialize().

Antes de PHP 7.2.0, el uso de is_object() en la clase __PHP_Incomplete_Class devolvía false. A partir de PHP 7.2.0, true será devuelto.

Sinopsis de la Clase

final class __PHP_Incomplete_Class {
}

Esta clase no tiene propiedades ni métodos por omisión. Cuando es creada por unserialize(), además de todas las propiedades y valores deserializados el objeto tendrá una propiedad __PHP_Incomplete_Class_Name que contendrá el nombre de la clase deserializada.

Historial de cambios

Versión Descripción
8.0.0 Esta clase es ahora final.

Ejemplos

Ejemplo #1 Creada por unserialize()

<?php

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

$myObject = new MyClass;

$foo = serialize($myObject);

// deserializa todos los objetos en objeto __PHP_Incomplete_Class
$disallowed = unserialize($foo, ["allowed_classes" => false]);

var_dump($disallowed);

// deserializa todos los objetos en objeto __PHP_Incomplete_Class excepto aquellos de las clases MyClass2 y MyClass3
$disallowed2 = unserialize($foo, ["allowed_classes" => ["MyClass2", "MyClass3"]]);

var_dump($disallowed2);

// deserializa una clase no definida en objeto __PHP_Incomplete_Class
$undefinedClass = unserialize('O:16:"MyUndefinedClass":0:{}');

var_dump($undefinedClass);

El resultado del ejemplo sería:


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