[PHP-dev 353] {} 演算子

Tsukada Takuya php-dev@php.gr.jp
Mon, 6 May 2002 18:16:22 +0900 (JST)


こんにちは、塚田と申します。

はじめに、mbBufferクラスを実装しました。

  ftp://night.fminn.nagano.nagano.jp/php4/be ta/php4_ombstring-0.1.tar.gz

   # モジュール名を変えました。


それで、本題の {} 演算子ですが、

  $buf = new mbBuffer("日本語");
  if ($buf{0} == "日") {
      echo "OK";
  } else {
      echo "NG";
  }

という記述が、

  $buf = new mbBuffer("日本語");
  if ($buf->get_at(0)->equals("日")) {
      echo "OK";
  } else {
      echo "NG";
  }

と解釈されればよさそうに思います。
この例を関数を使って書くと、

  $buf = mb_buf_create("日本語");
  $tmp = mb_buf_get_at($buf, 0);
  if (mb_buf_equals($tmp, "日") {
      echo "OK";
  } else {
      echo "NG";
  }

となります。

演算子の再定義ができるものだと、勝手に思い込んでいますが、
できないならばこの話は終わってしまいます。
でも、実行環境をワイド文字にしましょうというよりは、
演算子の再定義が出来るようにしましょうという方が、
可能性はあると思います。

ついでに、標準型への変換も自動的に呼ばれるようになると
うれしいです。

  echo $buf;

    ↓

  echo $buf->to_string();


-- 
sender: Tsukada Takuya (塚田 卓也)
town: inaba hizume, Nagano City (長野市稲葉日詰)