PHP5.3の無名関数をRefrectionしてみた

http://nonn-et-twk.net/twk/php5.3-lambdaで、

ちなみに無名関数を代入した変数をprint_rすると、Closure Object()とかでてきます。

とあったので、さっそく試してみました。

<?php
$function = function() { echo "hello!"; };
var_dump($function);
object(Closure)#1 (0) {
}

function() {...}で無名関数を作ったとき、
Closureというクラスのインスタンスが作成されるみたい。


ClosureクラスをReflectionしてみる。

<?php
ReflectionClass::export('Closure');
Class [ <internal> final class Closure ] {

  - Constants [0] {
  }

  - Static properties [0] {
  }

  - Static methods [0] {
  }

  - Properties [0] {
  }

  - Methods [1] {
    Method [ <internal> public method __invoke ] {
    }
  }
}

Closureクラスはfinalなクラスで、__invoke()というメソッドを持ってるらしい。


ためしに実験。。。ちゃんと動く。

<?php
$function = function() { echo "hello!"; };
$function->__invoke(); // hello!


ここでピコーンと思いついて下記のコードを書いてみました。

<?php
class Hoge {
    function __invoke() {
        echo "hoge";
    }
}

$hoge = new Hoge();
$hoge(); // hoge

これを実行すると、予想通り"hoge"と表示されました。
__invoke()メソッドを書いておくと、
$hoge()で呼び出せる模様。

__invoke()は__call()とか__get()みたいなマジックメソッドなんでしょか。

Perlの評判

会社でのPerlの評判はやっぱり悪い。
読めないだのきもいだのちょっと高度なシェルスクリプトでしょだのblessが意味わからんだのPerlOOPとかできるの?だの。


。。。(^ω^#)
昔のPerlとは違うんですよ!
インターフェースだってMoose使えば書けるんですよ!型指定もできるよ!
O/RマッパだってDBIx::Classがあるし、フレームワークだってCatalystもあるよ!
いちいちアクセサメソッド書かなくてもClass::Acsessor::Fast使えばかんたんですよ!
Plaggerは超楽しいよ!
書籍も充実しててPerlHacksとかPerlベストプラクティスとかすげえ本いっぱいでてるよ!


とか力説。


まだまだPerlに対する偏見が根強いと感じる今日この頃。


昔のPerlしか知らない人に最近のPerlを教えるためのテンプレみたいなのが欲しいなー
とりあえずperl-users.jp紹介しといたけど。


みんな今のPerl知らなくて、もったいないなあと思った。
すんげえ楽しいのにー

Windowsを再インストールしたときに入れるアプリ一覧

Windowsを入れなおしたので、備忘録代わりに。

・ActivePerl
PHP
Java
Apache
PostgreSQL
Eclipse
LimeChat
Windows Live Messenger
・JaneView
iTunes
Poderosa
Visual Studio Express Edition
Firefox
Thunderbird
・otbedit
Meadow
・xkeymacs
bluewind
・noah
コマンドプロンプトへ送る
・リンク作成シェル拡張

Kansai.pm行ってきた。

■勉強会
・会場に入ったら受付とかは特になくて、まごまごしながら席につく。
・空前の退職ブーム
mooseはむーすって読むらしい。ずっとみゅーずだと思ってた。ぬこ。
・「脱」KENT様スタイルの話が面白かった。下手にぐぐるよりオライリー本読もう!とのこと。
・初めて生naoyaさんを見た。Hadoop試さねば。
・どら


■懇親会
・fbisさんにお会いできて感激。ActivePerlは意外と使える。
・意外とPHPも使ってる人がいくてびっくり。
id:Ashizawaさんが自分の会社を知ってたり世間は狭い。


テキトーなまとめですが、初めての勉強会で緊張しつつも楽しい時間をすごせました!

lang-users.jp

自分がPerlを始めたときの検索ワードは、「perl」「perl 初心者」「perl 入門」でした。
これらでぐぐったら一番最初にperl-users.jpがきたらいいなあ。


あと、その言語でどんなものを作れるかが分かればありがたい。
はてなとかMixiとかモバゲーはPerlで作られてます!とか。


最近Lispを勉強し始めたのだけど、Lispで何を作れるのかいまいちイメージが沸かないのです。