[PHP-dev 356] Re: {} 演算子

Tsukada Takuya php-dev@php.gr.jp
Wed, 8 May 2002 01:08:03 +0900 (JST)


こんにちは、塚田です。

ふじもと さん:
> 悲しいことに、確かZE2には演算子をオーバーロードする機能は無かったように
> 思います(rubyはできるのに...)。間違ってたらご指摘お願いします。

私も詳しくは見ていませんが、それらしい機能はまだないようですね。
でも、zend_object_handlers を見るといろいろ応用できそうな感じは
します。


> 
> Zeev宛かZE2-list宛にリクエスト出してみましょうか?でも、「遅くなる」等の
> 理由ではねられる確立が高いような気もします:(

今までobject型に対する演算とかをほとんど考慮していなかったので、
機能を追加すれば、遅くなるのは仕方ないと思います。
ただ、integer型やstring型どうしの演算に影響がなければ良いのでは?

  if ( [object] == [string] ) {
     ...

という文脈では、多少遅くてもそれなりの動作を期待している
のではないでしょうか。


> 
> phpではstring型に文字列とバイト列(バイナリデータ)が混在しうる訳で、{}演
> 算子が文字を数えればそれで万事解決、というわけにも行かないところが微妙で
> すね。いっそ無いほうが、とも思います。それか、バイト列用の演算子を追加す
> るか...

 {} が演算子なのだとしたら、文字列型として機能する新しい型を
作って、それに対する動作を定義するのが筋だと思います。
それで、その新しい型を実行環境の基本型として実装するか、
object型を使って拡張するか、どちらかになると思うのですが、
中身がマルチバイトのままだったら、オブジェクトにした方が
良いと思います。つまり、貧弱な機能の基本型よりは、リッチな
オブジェクトにしようという事です。


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