Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 28 additions & 17 deletions reference/funchand/functions/forward-static-call-array.xml
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: c6fb604f39a0fa7bf1ae872064b2a3a24f23d855 Maintainer: takagi Status: ready -->
<!-- EN-Revision: 17ddeefd6592d09dd9abcf185f56b5befc7b2d6d Maintainer: takagi Status: ready -->
<!-- Credits: mumumu -->
<refentry xml:id="function.forward-static-call-array" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>forward_static_call_array</refname>
<refpurpose>static メソッドをコールし、引数を配列で渡す</refpurpose>
<refpurpose>現在呼び出されたクラスを保持したまま、パラメータの配列を指定してコールバックをコールする</refpurpose>
</refnamediv>

<refsect1 role="description">
Expand All @@ -15,14 +15,25 @@
<methodparam><type>callable</type><parameter>callback</parameter></methodparam>
<methodparam><type>array</type><parameter>args</parameter></methodparam>
</methodsynopsis>
<para>
<parameter>callback</parameter> パラメータで指定したユーザー定義の関数あるいはメソッドをコールします。
この関数はメソッドのコンテキストでコールしなければなりません。
クラスの外部で使用することはできません。
この関数は <link linkend="language.oop5.late-static-bindings">遅延静的束縛</link> を使います。
転送先のメソッドへのすべての引数は値渡しで、
<function>call_user_func_array</function> と同様に配列で指定します。
</para>
<simpara>
<parameter>callback</parameter> パラメータで指定したユーザー定義の関数あるいはメソッドを、
<function>call_user_func_array</function> と同様に引数を配列で渡してコールします。
メソッドのコンテキスト内でコールし、かつコールバックがメソッドの場合は
<link linkend="language.oop5.late-static-bindings">転送コール</link> となるため、
そのメソッド内の <literal>static::</literal> は、
転送元での <literal>static::</literal> と同じクラスに解決されます。
これは、<literal>self::</literal> や <literal>parent::</literal>
のように振る舞わせたい static メソッドをコールバックとして渡す場合に便利です。
</simpara>
<note>
<simpara>
<function>forward_static_call</function> とは異なり、
この関数は有効なクラススコープを必要としません。
クラスの外部でコールした場合、<function>forward_static_call</function> は
<exceptionname>Error</exceptionname> をスローしますが、
この関数はスローしません。
</simpara>
</note>
</refsect1>

<refsect1 role="parameters">
Expand All @@ -41,14 +52,14 @@
<varlistentry>
<term><parameter>args</parameter></term>
<listitem>
<para>
このひとつのパラメータに、メソッドに渡すすべてのパラメータを配列で指定します
</para>
<simpara>
コールバックに渡すパラメータを配列で指定します
</simpara>
<note>
<para>
<function>forward_static_call_array</function>
へのパラメータは参照渡しではないことに注意しましょう
</para>
<simpara>
パラメータを参照渡しするには、
<parameter>args</parameter> の対応する要素が参照である必要があります
</simpara>
</note>
</listitem>
</varlistentry>
Expand Down
21 changes: 13 additions & 8 deletions reference/funchand/functions/forward-static-call.xml
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 0c9c2dd669fe9395eaa73d487fbd160f9057429a Maintainer: takagi Status: ready -->
<!-- EN-Revision: 17ddeefd6592d09dd9abcf185f56b5befc7b2d6d Maintainer: takagi Status: ready -->
<!-- Credits: mumumu -->
<refentry xml:id="function.forward-static-call" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>forward_static_call</refname>
<refpurpose>static メソッドをコールする</refpurpose>
<refpurpose>現在呼び出されたクラスを保持したままコールバックをコールする</refpurpose>
</refnamediv>

<refsect1 role="description">
Expand All @@ -15,12 +15,17 @@
<methodparam><type>callable</type><parameter>callback</parameter></methodparam>
<methodparam rep="repeat"><type>mixed</type><parameter>args</parameter></methodparam>
</methodsynopsis>
<para>
<simpara>
<parameter>callback</parameter> パラメータで指定したユーザー定義の関数あるいはメソッドを、
それに続く引数を指定してコールします。この関数はメソッドのコンテキストでコールしなければなりません。
クラスの外部で使用することはできません。
この関数は <link linkend="language.oop5.late-static-bindings">遅延静的束縛</link> を使います。
</para>
コールバックがメソッドの場合は
<link linkend="language.oop5.late-static-bindings">転送コール</link> となるため、
そのメソッド内の <literal>static::</literal> は、
転送元での <literal>static::</literal> と同じクラスに解決されます。
これは、<literal>self::</literal> や <literal>parent::</literal>
のように振る舞わせたい static メソッドをコールバックとして渡す場合に便利です。
</simpara>
</refsect1>

<refsect1 role="parameters">
Expand All @@ -39,9 +44,9 @@
<varlistentry>
<term><parameter>args</parameter></term>
<listitem>
<para>
関数に渡したいパラメータ
</para>
<simpara>
コールバックに渡す、ゼロ個以上のパラメータ
</simpara>
</listitem>
</varlistentry>
</variablelist>
Expand Down
Loading