1
0
mirror of https://github.com/php/doc-ru.git synced 2026-03-24 07:42:22 +01:00
Files
archived-doc-ru/reference/reflection/reflectionclass/resetaslazyghost.xml
2024-11-10 14:59:20 +03:00

169 lines
8.2 KiB
XML
Raw Permalink 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: c0fa5077c8862405942d8aac7360c5169558b59b Maintainer: malferov Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="reflectionclass.resetaslazyghost" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
<refname>ReflectionClass::resetAsLazyGhost</refname>
<refpurpose>Сбрасывает и помечает объект ленивым</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis role="ReflectionClass">
<modifier>public</modifier> <type>void</type><methodname>ReflectionClass::resetAsLazyGhost</methodname>
<methodparam><type>object</type><parameter>object</parameter></methodparam>
<methodparam><type>callable</type><parameter>initializer</parameter></methodparam>
<methodparam choice="opt"><type>int</type><parameter>options</parameter><initializer>0</initializer></methodparam>
</methodsynopsis>
<simpara>
Метод сбрасывает существующий объект <parameter>object</parameter> и помечает объект ленивым.
</simpara>
<simpara>
Метод вызывает деструктор объекта, только если деструктор определили в классе и если
указали флаг <constant>ReflectionClass::SKIP_DESTRUCTOR</constant>.
Только в отдельном случае, когда передали инициализированный прокси,
реальный экземпляр отсоединяется от прокси. Деструктор реального экземпляра
вызывается независимо от флага <constant>SKIP_DESTRUCTOR</constant>,
если ссылок на реальный экземпляр больше не осталось.
</simpara>
<simpara>
Динамические свойства удаляются, а значение свойств, которые объявили в классе,
отбрасывается, как если бы вызвали языковую конструкцию <function>unset</function>,
и объект помечается ленивым. Подразумевается, что если объект — экземпляр
подкласса с дополнительными свойствами, то эти свойства не изменяются и не становятся
ленивыми.
<link linkend="language.oop5.properties.readonly-properties">Доступные только для чтения свойства</link>
также не модифицируются и не становятся ленивыми, если такие свойства объявили окончательными
через ключевое слово <literal>final</literal> или сам класс окончательный объявили окончательным через ключевое
слово <literal>final</literal>.
</simpara>
<simpara>
Метод не помечает объект ленивым, если ни одно свойство не пометили ленивым. См.
также секцию
«<link linkend="language.oop5.lazy-objects.lifecycle">Жизненный цикл ленивых объектов</link>».
</simpara>
<simpara>
Иначе после вызова метода поведение объекта будет таким же, как у объекта, который создали
методом <methodname>ReflectionClass::newLazyGhost</methodname>, за исключением
подкласса и свойств, доступных только для чтения, как уже описывалось.
</simpara>
<simpara>
Объект не заменяется другим, и его идентификатор остается неизменным.
Поведение функций <function>spl_object_id</function>
и <function>spl_object_hash</function>,
классов <classname>SplObjectStorage</classname>, <classname>WeakMap</classname>
и <classname>WeakReference</classname>,
и <link linkend="language.oop5.object-comparison">оператора идентичности <literal>===</literal></link>
не меняется.
</simpara>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<variablelist>
<varlistentry>
<term><parameter>object</parameter></term>
<listitem>
<simpara>
Неленивый объект или инициализированный ленивый объект.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>initializer</parameter></term>
<listitem>
<simpara>
Callback-функция инициализатора с той же сигнатурой и целью,
что и в описании метода <methodname>ReflectionClass::newLazyGhost</methodname>.
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="reflectionclass.resetaslazyghost.parameters.options">
<term><parameter>options</parameter></term>
<listitem>
<para>
Параметр <parameter>options</parameter> принимает комбинацию следующих
флагов:
<variablelist>
<varlistentry>
<term>
<constant>ReflectionClass::SKIP_INITIALIZATION_ON_SERIALIZE</constant>
</term>
<listitem>
<simpara>
По умолчанию сериализация ленивого объекта запускает его инициализацию.
Установка этого флага предотвращает инициализацию, что разрешает сериализовать
ленивые объекты без инициализации.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>
<constant>ReflectionClass::SKIP_DESTRUCTOR</constant>
</term>
<listitem>
<simpara>
По умолчанию деструктор объекта, — если деструктор определили в классе, —
вызывается раньше, чем метод сделает объект ленивым. Это обеспечивает безопасность в отношении
предыдущих состояний объекта. Этот флаг отключает такое поведение и разрешает
сбрасывать объекты до ленивых без вызова деструктора.
</simpara>
</listitem>
</varlistentry>
</variablelist>
</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<simpara>
&return.void;
</simpara>
</refsect1>
<refsect1 role="errors">
&reftitle.errors;
<simpara>
Метод выбросит исключение <classname>ReflectionException</classname>, если объект ленивый
и объект не инициализировали.
</simpara>
<simpara>
Метод выбросит ошибку <classname>Error</classname>, если объект инициализируется,
или если свойства объекта перебираются
конструкцией <link linkend="control-structures.foreach"><literal>foreach</literal></link>.
</simpara>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<simplelist>
<member><methodname>ReflectionClass::newLazyGhost</methodname></member>
<member><methodname>ReflectionClass::resetAsLazyProxy</methodname></member>
</simplelist>
</refsect1>
</refentry>
<!-- 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
-->