[PHP-dev 170] Re: [PATCH] multibyte patch for PHP 4.1.0

Tomoyuki Asakawa php-dev@php.gr.jp
Sat, 22 Dec 2001 15:12:22 +0900


あさかわ です。

>
> 実は、最初は僕もmbstringの設定値を読むようにしようかと考えたのですが、ご
> 存知の通りZend EngineはPHP専用のものではなく、汎用スクリプトエンジンとし
> て使用できるようになっていて、Zend Engine自体がPHPに依存している箇所はほ
> とんどありません。

なるほど。
ところで、このパッチは、Zendコンパイラ/オプチマイザと互換
はあるのでしょうか?

>
> といった事情から、Zend Engineがphp.iniを読みに行くのは挙動として間違って
> いるかな、と考えて敢えて言語構造としてencodingディレクティブを追加してみ
> たのでした。というか、実はZend Engine側からphp.iniの内容を見に行くのは
> (無理ではありませんが)結構どろどろしたコードになってしまいそうなので止め
> た、という事情もあります...

たしかに、php.iniを、見に行くべきではないですね。
メモリ上?の、mbstring.internal_encodingを(もしあるのなら)
見るのならおかしくないと思います。

> とはいえ、encodingディレクティブの評判があまりに悪ければ、mbstringの設定
> 値を読みに行く方法も検討してみます。
>

たぶん、評判というより、どうあるべきかという問題じゃないでしょうか?
このパッチの問題ではないですが
mbstring.internal_encodingがSJISなら
pg_connectの中で、postgresqlに、
SET CLIENT_ENCODING TO 'SJIS'
をおくるべきだと思います。

これが、zendコンパイラの互換に問題が起きる様ならば
本家にやはり、コミットしてもらう必要があると思います。
(pg_connectを、オーバーライドすればよいのでしょうか?)

PHP3は、zendの問題がなかったおかげで、非常に理想的に仕上がっていると思
います。
(ファイルの読み込みも。internal_encodingにしたがってくれればもっと良
かったけど)

そのおかげで、文字コードや、プログラムという、ものを理解できない
ディザイナに、phpコードの含有した、htmlを渡してもなんとかなりました。

PHP4は現状では、上記の人に使わせるには、おまじないが多すぎて、結構難
しいです。
はやくPHP3並に、なってほしいと思います。

PHP3は、ソースを内部コードに自動変換する機構があった
おかげで、internal_encodingをEUCにすることで、すべて?
丸く収まりました。(ファイルのコードでは混乱しましたが)

でもこの機構をPHP4に入れるのは、本家は受け入れがたいと思います。

ところが、藤本さんのパッチ(さっきまちがえましたすいません)は
Sjisのまま扱うわけなので、許容範囲ではないかと思います。

勝ってな事ばかり言ってすいませんが。
PHP4を、普及させるには、コード問題の単純化は、必要なことだと思います。