PHP5.4.0がもうすぐ出るので
プログラムな話題担当のaotaです。ご無沙汰です。←
PHPerの2011年最後にして最大の話題は何といってもPHP5.4です。今のバージョンが5.3系ですが、5.3.0が2009年1月30日にリリースされたので、約二年ぶりのマイナーバージョンアップ、ということになります。といっても、年内はテスト版のリリースのみで、正式版は来年頭になるようですが、それでも今からわくわくしています。
5.4になると何がすごいのか? という話は、PHP5.4 Advent Calenderというリレー企画で、array()
を[]
で書けるようにしたrskyさんをはじめとしたさまざまなPHPerの方々が記事を書いてます。大きな変更から細かな違いまで、いろいろ乗っているので興味がある人はご覧ください。
で、今日は5.4とはちょっと関係ないですがPHPの話を。面白いことに気づいたので。
真偽値を求める関数、というのがあります。ざっくりいえば、正しいか正しくないか判定する、というものですね。
$taro = 'male'; $hanako = 'female'; function is_man($person) { if ($person === 'male') { return true; } else { return false; } } if (is_man($taro)) { echo '太郎は男です'; } if (is_man($hanako)) { echo '花子は男です'; // ここは表示されません }
こんなふうにif文の中で使うんですが、この真偽値を求める関数は、is_hogehoge
というように、頭にis
をつける習慣があります。たとえばJavaがそうなっていますし、PHPもそうです。
ところが、Rubyはちょっと面白いです。
if (man?(taro)) { p '太郎は男です'; }
こんなふうに、is
をつけないで、単に語尾に?
をつけるだけです。これは直感的で分かりやすいですよね。
PHPもこう書けたらいいのに……と思いますが、無理な話です。関数名に?
を含めることができる言語が特殊なだけなのです。
ところで。
スペイン語では、疑問文をこういうふうに書きます。
¿Como estás? (お元気ですか?)
文頭に変な記号がついていますね。さかさまのクエスチョンマークです。
……実はこの記号、PHPでは関数名や変数名として使うことができます。
ということは。
funciton ¿man($person) { ... } if (¿man($taro)) { '太郎は男です'; }
という書き方ができたりするわけです。気持ち悪いですね。
PHPは¿
だけでなく、いくつかの変わった記号類と、符号付文字(上で出てきたá
など)を変数名や関数名に使うことができます。ということは前から知っていたのですが、符号付文字が使える、ということだけ注目していて、記号類のことを失念していました。が、この記号類がなかなか面白そうです。
たとえば、無名関数やコールバックとして使える関数名を$ƒ
に代入するとか、×
や÷
といった数学記号なんかは使いどころがあるかもしれません。
ネックは、キーボードから入力しにくいところでしょうか。
何にしても、ちょっとした発見です。今のPHPにも、まだまだ知らないことがたくさんあるなあ、と。
そんなわけで、PHP5.4の前にPHP5.3までのおさらいをしておくのもいいかもしれません。aotaでした。