[PHP-dev 1389] Re: mb_strwidth関数とmb_strimwidth関数の挙動について

Seiji Masugata s.masugata @ digicom.dnp.co.jp
2007年 8月 9日 (木) 21:44:56 JST


こんばんわ、桝形です。

色々と助言ありがとうござます。参考になります。

> PHP の手続き型で利用されることが想定される関数でコンテキスト (先の文脈と
> 同じ意味で使っています) を扱うには 4 通りの慣例があると認識しています。
> 
> 1. 拡張モジュール側で内部的にコンテキストを保持する。コンテキストはユー
> ザから隠蔽する (strtok() や mb_regex_set_options() など)
> 2. コンテキストをリソースとしてユーザに公開し、ユーザ側が関数の引数とし
> てそれを常に渡すようなインターフェイスにする (stream context など)
> 3. 配列、ビットマスクなどの形で、関数パラメータとして暗黙的にコンテキス
> トをユーザが指定できるようにする。
> 4. コンテキストごとに別の関数を用意する。(imagecopyresampled() /
> imagecopyresized() など)
> 
> もっぱら 1. は安直で、バグの温床になるのでできれば避けたいと思います。

個人的には4を想定していたのですが、2と3も考えようによっては利用者が
自由に定義を決められるので、魅力的かもしれませんね。

4の場合、似たような定義が増えた場合に関数を更に追加するのか、みたいな
ジレンマも起きそうですね。

3の場合であれば、さわださんが望んでいる結果を自身で定義できるかも。


個人的には、簡単に実装できて、かつ見通しが良い方向で実装できれば
嬉しいな、という程度(軽い気持ち)にしか考えていませんでした。。。
少し改める必要がありそうですね。ドウモスミマセン。

-- 
Seiji Masugata <s.masugata @ digicom.dnp.co.jp>



PHP-dev メーリングリストの案内