5.3から使えるようになった「無名関数」とはPHPでは、5.3から「無名関数」という文法が増えました。functions」とされる通り「Anonymous(名前のない)」関数です。リスト11のように書きます。function\n";};//$func();リスト11無名関数は、例えば「関数自体、を関数の戻り値として返す」であるとか、あるいは「関数の引数で『callable』とされているところに直接関数を書く」などの用途で使われることがあります。関数の引数に直接関数を書くのは、JavaScriptだと比較的なじみがあるものかと思います。比較的よく見掛ける無名関数の使い方としては、例えば「set_error_handler()関数を使って、標準の関数についても、エラーであれば例外をthrowする」というものです。リスト12は、実際に「関数の引数に、直接無名関数を記述している」書き方です。$errline);});リスト12無名関数は、どう実装されているのかさて、この「無名関数」ですが、実際にはPHPでどのように実装されているのでしょうか?まずは、リスト11に少し手を入れて、確認してみましょう。function\n";};//$func();var_dump($func);リスト13実行すると、下記のようになります。{}結果13このように、実際には無名関数はインスタンスになっています。インスタンスを関数として扱う__invoke()無名関数は内部的には、「__invoke()」というマジックメソッドを使っています。冒頭で述べた通りマジックメソッドは一定の条件の下に暗黙で呼ばれるメソッドですが、別に明示的に呼んではいけないわけではないので、明示的に呼んでみましょう(リスト14)。function\n";};//$func->__invoke();リスト14動かしてみると分かる通り、結果13と同じ動きをします。__invokeマジックメソッドはインスタンスを関数としてコールしようとした際に呼ばれるマジックメソッドなので、例えばリスト15のようなコードを書くことができます。hoge();$obj();リスト15普段は無名関数の書式で使うことが多いので、__invoke自体を実際に実装するという機会は少ないかと思いますが、「こんなことができる」というのを知っておくと、ひょんなところで役に立つかもしれません。__toString()でインスタンスを文字列にする前述のように__invokeはインスタンスを関数として扱う場合に使いますが、インスタンスを文字列のように扱う場合、__toStringを使います。「toString」というメソッド名自体は、実はJavaやC#など、いくつかの言語にも見られるメソッドです。ログへの出力などの状況で、うまく使っていくと便利です。実際に、コードを書いて検証してみましょう。__toStringがない場合です。string」というエラーになります。続いて、__toStringを実装してみましょう。"{$s}\n";リスト17実行すると、下記のようになります。string結果17なお、「インスタンスの保存」という意味では、連載第6回で説明を予定している「シリアライズ」の方が便利なので、そちらも参照してもらえればと思います。次回は、interface、抽象メソッド、traitなどについて今回は、比較的PHPに固有な仕様である「マジックメソッド」のいくつかについて説明しました。次回は、オブジェクト指向系の言語で割と広く見られる「interface」、抽象メソッド、多重継承の系列の一つである「trait」などについて解説します。1970年浅草生まれ。1995年に富士通系のソフトハウスに就職しプログラマーに転身。いったエンジニア支援活動を独自に展開し、占い師時代の「ガルーダ」という占い師名にちなんだ「がる先生」の愛称で親しまれている。コンサルティングからシステム設計、ネットワークにセキュリティと、守備範囲は比較的多岐にわたる。PHPプログラミングを始めるための基礎知識とXAMPPのインストールオープンソースのWeb開発向けスクリプト言語「PHP」の文法を一から学ぶための入門連載。7.1含め2017年の情報に合うように対応、XAMPP環境構築を追記】。ソースをダウンロード今回からPHPのビルドとインストールに入ります。PHPという言語の概要と、ソースコードの入手法を解説します(編集部)理論編:PHPについて知ろうスクリプトを記述するだけの簡単なプログラミングで、Web対応の高速なデータベースアプリケーションを実現する手法としてPHPが急速に注目を集めている。データベースはオープンソースのPostgreSQLだけでなく、Oracleなどの商用データベースも扱える。ここでは、5月にバージョンアップしたばかりのPHP4によるWeb-DBシステム構築法を紹介しよう。X+PHPでオールインワン環境(インストール編):Mac内にPHP4、5、6を同居させるコツPHP4の開発は終了したが、移行の問題は残されている。vol.11」が開催された。今回のレポートでは、「自分をプログラミング言語に例える」というお題に答えた5人の技術者の回答をみていく。メールマガジンをご購読ください。申し込みページへITmediaはアイティメディア株式会社の登録商標です。