1
0
mirror of https://github.com/php/doc-ja.git synced 2026-03-24 07:02:08 +01:00
Files
2025-08-27 18:54:39 +09:00

189 lines
6.6 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"?>
<!-- $Revision$ -->
<!-- EN-Revision: 2d8559c6c0c10f677080b636bd67e54efdc2cf0a Maintainer: KentarouTakeda Status: ready -->
<!-- Credits: KentarouTakeda -->
<refentry xml:id="reflectionclass.newlazyghost" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
<refname>ReflectionClass::newLazyGhost</refname>
<refpurpose>新しいレイジーゴーストインスタンスを作成する</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis role="ReflectionClass">
<modifier>public</modifier> <type>object</type> <methodname>ReflectionClass::newLazyGhost</methodname>
<methodparam><type>callable</type><parameter>initializer</parameter></methodparam>
<methodparam choice="opt"><type>int</type><parameter>options</parameter><initializer>0</initializer></methodparam>
</methodsynopsis>
<simpara>
クラスの新しいレイジーゴーストインスタンスを作成し、
<parameter>initializer</parameter> をアタッチします。コンストラクタは呼び出されず、
プロパティはデフォルト値に設定されません。オブジェクトの状態を
初めて参照または変更する時に、
<parameter>initializer</parameter>をにより自動的に初期化されます。
<link linkend="language.oop5.lazy-objects.initialization-triggers">初期化トリガー</link>および
<link linkend="language.oop5.lazy-objects.initialization-sequence">初期化シーケンス</link>
を参照してください。
</simpara>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<variablelist>
<varlistentry>
<term><parameter>initializer</parameter></term>
<listitem>
<simpara>
イニシャライザは以下のシグネチャを持つコールバックです:
</simpara>
<para>
<methodsynopsis>
<type>void</type><methodname><replaceable>initializer</replaceable></methodname>
<methodparam><type>object</type><parameter>object</parameter></methodparam>
</methodsynopsis>
<variablelist>
<varlistentry>
<term><parameter>object</parameter></term>
<listitem>
<simpara>
初期化される<parameter>object</parameter>。この時点では、
オブジェクトはもはやレイジーとしてマークされておらず、
アクセスしても再び初期化がトリガーされることはありません。
</simpara>
</listitem>
</varlistentry>
</variablelist>
</para>
<simpara>
<parameter>initializer</parameter>関数は &null; を返すか、
値を返さない必要があります。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="reflectionclass.newlazyghost.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>
</variablelist>
</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<simpara>
レイジーゴーストインスタンスを返します。オブジェクトにプロパティがない場合、または
そのプロパティがすべてstaticまたはvirtualの場合、通常のレイジーではないインスタンスが
返されます。
<link linkend="language.oop5.lazy-objects.lifecycle">レイジーオブジェクトの
ライフサイクル</link>も参照してください。
</simpara>
</refsect1>
<refsect1 role="errors">
&reftitle.errors;
<simpara>
クラスが内部クラスであるか、<classname>stdClass</classname>を除く内部クラスを
拡張している場合、<classname>Error</classname>をスローします。
</simpara>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<example>
<title>基本的な使用法</title>
<programlisting role="php">
<![CDATA[
<?php
class Example {
public function __construct(public int $prop) {
echo __METHOD__, "\n";
}
}
$reflector = new ReflectionClass(Example::class);
$object = $reflector->newLazyGhost(function (Example $object) {
$object->__construct(1);
});
var_dump($object);
var_dump($object instanceof Example);
// 初期化をトリガーし、その後プロパティを取得します
var_dump($object->prop);
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
lazy ghost object(Example)#3 (0) {
["prop"]=>
uninitialized(int)
}
bool(true)
Example::__construct
int(1)
]]>
</screen>
</example>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<simplelist>
<member><link linkend="language.oop5.lazy-objects">レイジーオブジェクト</link></member>
<member><methodname>ReflectionClass::newLazyProxy</methodname></member>
<member><methodname>ReflectionClass::newInstanceWithoutConstructor</methodname></member>
<member><methodname>ReflectionClass::resetAsLazyGhost</methodname></member>
<member><methodname>ReflectionClass::markLazyObjectAsInitialized</methodname></member>
<member><methodname>ReflectionClass::initializeLazyObject</methodname></member>
<member><methodname>ReflectionClass::isUninitializedLazyObject</methodname></member>
<member><methodname>ReflectionProperty::setRawValueWithoutLazyInitialization</methodname></member>
<member><methodname>ReflectionProperty::skipLazyInitialization</methodname></member>
<member><methodname>ReflectionProperty::isLazy</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
-->