PHP Incomplete Class

Från Wiki.linux.se
Hoppa till navigering Hoppa till sök

Klassen __PHP_Incomplete_Class

(PHP 4.0.1, PHP 5, PHP 7, PHP 8)

Introduktion

Skapas av `unserialize()` när man försöker avserialisera en odefinierad klass eller en klass som inte finns med i `allowed_classes` i `unserialize()`s options-array.

Innan PHP 7.2.0 skulle användning av `is_object()` på klassen __PHP_Incomplete_Class returnera `false`. Från och med PHP 7.2.0 kommer den att returnera `true`.

Klassöversikt

class __PHP_Incomplete_Class {
}

Denna klass har inga standardegenskaper eller metoder. När den skapas av `unserialize()` kommer objektet, förutom alla avserialiserade egenskaper och värden, att ha en egenskap `__PHP_Incomplete_Class_Name` som innehåller namnet på den avserialiserade klassen.

Exempel

Exempel #1 Skapad av unserialize()
<?php

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

$myObject = new MyClass;

$foo = serialize($myObject);

// Avserialiserar alla objekt till __PHP_Incomplete_Class-objekt
$disallowed = unserialize($foo, ["allowed_classes" => false]);

var_dump($disallowed);

// Avserialiserar alla objekt till __PHP_Incomplete_Class-objekt förutom de av MyClass2 och MyClass3
$disallowed2 = unserialize($foo, ["allowed_classes" => ["MyClass2", "MyClass3"]]);

var_dump($disallowed2);

// Avserialiserar en odefinierad klass till ett __PHP_Incomplete_Class-objekt
$undefinedClass = unserialize('O:16:"MyUndefinedClass":0:{}');

var_dump($undefinedClass);
?>

Ovanstående exempel kommer att ge något liknande:

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


Sidslut

Orginalhemsidan på Engelska : https://www.php.net/manual/en/class.php-incomplete-class.php
PHP
Språkreferens
Fördefinierade Gränssnitt och Klasser


Det här är en maskinöversättning av PHP-manualen till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på https://www.linux.se/kontaka-linux-se/

Tack till Datorhjälp som har sponsrat Linux.se med webserver.