新着情報

News

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でした。

2011年12月20日 | スタッフブログ