1
0
mirror of https://github.com/php/doc-ru.git synced 2026-03-26 00:32:15 +01:00
Files
archived-doc-ru/language/predefined/php-incomplete-class.xml

131 lines
4.2 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 26e26a95fdc3aac9b464068953ea3105dee00f14 Maintainer: malferov Status: ready -->
<!-- Reviewed: no -->
<reference xml:id="class.php-incomplete-class" role="class" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude">
<title>Класс __PHP_Incomplete_Class</title>
<titleabbrev>__PHP_Incomplete_Class</titleabbrev>
<partintro>
<section xml:id="php-incomplete-class.intro">
&reftitle.intro;
<para>
Объект класса создаётся функцией <function>unserialize</function>
при попытке десериализации неопределённого класса
или класса, который не указали в списке <literal>allowed_classes</literal>
в параметре <parameter>options</parameter> функции <function>unserialize</function>.
</para>
<para>
До PHP 7.2.0 функция <function>is_object</function>, которую вызывали
на объекте класса <classname>__PHP_Incomplete_Class</classname>, возвращала &false;.
С PHP 7.2.0 такой вызов будет возвращать &true;.
</para>
</section>
<section xml:id="php-incomplete-class.synopsis">
&reftitle.classsynopsis;
<classsynopsis class="class">
<ooclass>
<classname>__PHP_Incomplete_Class</classname>
</ooclass>
</classsynopsis>
<para>
В классе нет свойств или методов по умолчанию.
Когда функция <function>unserialize</function> создаёт объект неполного класса,
в дополнение к остальным несериализованным свойствам и значениям объект
будет содержать свойство <literal>__PHP_Incomplete_Class_Name</literal>, которое
будет содержать название несериализованного класса.
</para>
</section>
<section xml:id="php-incomplete-class.examples" role="examples">
&reftitle.examples;
<example xml:id="php-incomplete-class.basic-example">
<title>
Пример того, как функция <function>unserialize</function> создаёт объект неполного класса
</title>
<programlisting role="php">
<![CDATA[
<?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);
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
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"
}
]]>
</screen>
</example>
</section>
</partintro>
</reference>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->