|
|
@@ -0,0 +1,73 @@
|
|
|
+<?xml version="1.0" encoding="UTF-8"?>
|
|
|
+<!-- Reviewed: no -->
|
|
|
+<!-- EN-Revision: 15723 -->
|
|
|
+<sect2 id="zend.filter.set.callback">
|
|
|
+ <title>Callback</title>
|
|
|
+ <para>
|
|
|
+ このフィルタにより、<classname>Zend_Filter</classname>とともに自分自身のメソッドを使うことができます。
|
|
|
+ 機能を果たすメソッドすでにあるとき、新しいフィルタを生成する必要はありません。
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ 文字列を逆にするフィルタを生成したいとしましょう。
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <programlisting language="php"><![CDATA[
|
|
|
+$filter = new Zend_Filter_Callback('strrev');
|
|
|
+
|
|
|
+print $filter->filter('Hello!');
|
|
|
+// "!olleH"を返します
|
|
|
+]]></programlisting>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ おわかりのように、自分自身のフィルタを定義するために本当に簡単にコールバックを使えます。
|
|
|
+ メソッド(それはクラス内で定義されます)をコールバックとして配列を与えることによって使うことも可能です。
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <programlisting language="php"><![CDATA[
|
|
|
+// クラスの定義
|
|
|
+class MyClass
|
|
|
+{
|
|
|
+ public function Reverse($param);
|
|
|
+}
|
|
|
+
|
|
|
+// フィルター定義
|
|
|
+$filter = new Zend_Filter_Callback(array('MyClass', 'Reverse'));
|
|
|
+print $filter->filter('Hello!');
|
|
|
+]]></programlisting>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ 実際に設定されているコールバックを取得するには<code>getCallback()</code>を使い、
|
|
|
+ 他のコールバックを設定するには<code>setCallback()</code>を使います。
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ フィルタが実行されるとき、
|
|
|
+ 呼ばれるメソッドに配列として与えられるデフォルト・パラメータを定義できます。
|
|
|
+ この配列は、フィルターされた値で結合されます。
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <programlisting language="php"><![CDATA[
|
|
|
+$filter = new Zend_Filter_Callback(
|
|
|
+ 'MyMethod',
|
|
|
+ array('key' => 'param1', 'key2' => 'param2')
|
|
|
+);
|
|
|
+$filter->filter(array('value' => 'Hello'));
|
|
|
+]]></programlisting>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ 手動で上記のメソッド定義を呼ぶと、それはこのように見えます:
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <programlisting language="php"><![CDATA[
|
|
|
+$value = MyMethod('Hello', 'param1', 'param2');
|
|
|
+]]></programlisting>
|
|
|
+
|
|
|
+ <note>
|
|
|
+ <para>
|
|
|
+ 呼ばれることができないコールバック・メソッドを定義すると、
|
|
|
+ 例外が発生する点に注意しなければなりません。
|
|
|
+ </para>
|
|
|
+ </note>
|
|
|
+
|
|
|
+</sect2>
|