MyMiniCity踏んでください!!

ただいま絶賛MyMiniCity参加中です.是非リンクを踏んでください!!(笑
June 5th, 2006

ますさんのパッチをどうか? と思う点について

(Read: 7763)
Add to Hatena Bookmark

参照: ます’s Diary - どうでもいい事100選
長くなったのでコメントではなくエントリにさせてもらいます

■関数が追加されることについて


PHP_FE(mb_list_encodings, NULL)
+ PHP_FE(mb_list_encodings_alias_names, NULL)
+ PHP_FE(mb_list_mime_names, NULL)
ですが,関数の使い分けをしなければいけない理由がPHPスクリプトを記述する人間には全くありません.
少なくとも,mb_list_encodings()とmb_list_encodings_alias_names()が分かれて幸せな人はいないと考えます.

mb_list_encodings()の仕様変更について

mb_list_encodings()が今回のように引数を持ったのはいいことだと思います.
しかし,引数と返り値が変化して都合のいい人はあまりいないと思います.


$ ./php -r 'var_dump( mb_list_encodings("SHIFT_JIS"));'
string(4) "SJIS"
$ ./php -r 'var_dump( mb_list_encodings("SJIS-OPEN"));'
string(8) "SJIS-win"
$ ./php -r 'var_dump( mb_list_encodings("EUCJP-OPEN"));'
string(9) "eucJP-win"
これはmbstring内のデータベースと一致したらその文字列を返すのではなく,引数の文字列を返すようにした方がいいと思いますがいかがでしょうか?

返値に無駄な値がある

返値に「auto」「pass」などが返ってくるのは無駄なんじゃないでしょうか?
欲しいという状況ももしかしたらあるかもしれませんが,簡単には想像できません.
また,mb_list_mime_names()ではさらに「base64」「HTML-ENTITIES」「Quoted-Printable」なども不必要だと思います.

#メールのContent-Transer-Encodingも含めると「HTML-ENTITIES」以外は不必要でもないといえばそうですが…

mb_list_mime_names()が小は大を兼ねない問題

次に,mb_list_mime_names()ですが,引数に文字エンコードを入力するとなるべく近いMIME用文字エンコード名が返ってきますが,「大は小を兼ねる」ではなく,「小は大を兼ねない」になります.


$ ./php -r 'var_dump( mb_list_mime_names("EUCJP-WIN"));'
string(6) "EUC-JP"
#まぁそれでも需要はあるとは思いますしまだ無きマニュアルで書けばいい話かもしれませんが

まとめ

全体的に「無いよりある方がいい」かもしれませんが,個人的に自分ボツした実装(ブログのエントリにもしなかった)と似ているので気になりました.

#超局所的には「mb_list_encodings()の引数拡張」であの問題逃げられる!!とか思うところあるので複雑な心境ですが(苦笑

とりあえず面倒でなければ(いや面倒ですよね)php-dev@で話を進められたらと思うのですがいかがでしょう?
もしくは廣川さんもますさんのはてなダイアリー見てるみたいなのでそこでもいいのかも知れませんが(苦笑


▼ この記事へのコメント ▼
どうもー。取り上げて頂き感謝です。:)
指摘して頂いた件については検討させて下さいませ。
オプション引数とか用意するかもしれません。
例えば、デフォルトではELFさんの仰った戻り値で返して、オプション引数があった場合は
内部の(実体)文字列を返すとか。


外はどうであれ、mbstring的にはエイリアスなのでエイリアスと実体は流石に分けて考えるべきかと。
# 一緒くたにする関数は用意するかもしれません(mb_list_all_encodingsみたいなー)。
経緯は不明ですが、mbstring(というかlibmbfl)は独自の名称が実体になってるので(SJIS-winとかeucJP-winとか)。
昔、コレで大いにハマリました。。。ちょっと落ち着いて考えてみたいと思います。
どうもありがとうございました。

全部のmbstringの実装をきれいに読んだわけじゃないんですが,
全部の入出力時はstruct _mbfl_encodingいうところの*aliasesを,内部的にテーブルを使うときのみ*nameを使うように実装するべきじゃないかと思うんです.
#今*nameにしかないものも*aliasesに含むようにする
そうすれば外から見たら*aliasesしか存在しないんです.

で,一応SJIS-winとかeucJP-winはlibmf独自用語ではないようです.
その辺はレガシーエンコーディングプロジェクトで眺めれば出てくると思います.
頭痛いところになるとそういうことがかなり詳しい洋書があるようで,
レガシーエンコーディングミーティングにありました.

あ。すみません。書き方がマズかったです。
IANA的に沿った書式なのかなって事を言いたかったのです。
*-winとかって、単なる便宜上のものとしか思えないし。

後、これは個人的な意見ですが、混同するのは(あまり)賛同できません。
実装するのが面倒だから、という訳ではなくて(多分)考え方とか方針の違いみたいなモンだと思います。



> あ。すみません。書き方がマズかったです。
> IANA的に沿った書式なのかなって事を言いたかったのです。
> *-winとかって、単なる便宜上のものとしか思えないし。

書式というのが単語を構成する文字シンタックスのことならRFC2278である程度推測できるのかもしれませんが,
URL見つけただけでほとんど読んでいません(苦笑
http://ietf.org/rfc/rfc2278.txt

強いて言うと,これをあまり強調すると

Name: Extended_UNIX_Code_Packed_Format_for_Japanese
Alias: csEUCPkdFmtJapanese
Alias: EUC-JP (preferred MIME name)

とかEUC-JPすらaliasになるようなのでややこしいところです(というのは素人考えですが

> 後、これは個人的な意見ですが、混同するのは(あまり)賛同できません。
> 実装するのが面倒だから、という訳ではなくて(多分)考え方とか方針の違いみたいなモンだと思います。

わたしの「整理(とは明言しませんでしたが)」はますさん的には「混同」という辺りで多分平行線なんだと思います.
この辺やっぱりphp-dev@で議論をすべきレベルになってきてる感じですね.

個人的にわたしの案でも実装されたものはPHPスクリプトを記述するユーザーには変化は無いはずなので,
可能ならPHP 5.2につっこみたいところですが,
「じゃーおまえ試しにコードかけ!!」的なところなのにまだしばらく時間がとれないのが歯がゆいです.

トピックの参照元

▼最近のトピック

▼ 人気のトピック


< 過去の記事 [ 10All Categories ] 新しい記事 >
Powered by gsblog (customize)

[ POST ] [ AddLink ] [ CtlPanel ]

Subscribe blog

Bookmark blog

About me

about me

応援しています

我が息子が産まれたアクア・バースハウス(東京都世田谷区にある助産院)を応援しています.

翻訳のお仕事

腕に自信がある方,修行をしたい方はこちらをどうぞ.

2019 calendar

10月
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
| Day | Month | Year |

Powered by RRDTOOL.

Archives

Categories

Links


Mail to admin

人気ブログランキングへ RSS feed meter for http://blog.poyo.jp/ Search Engine Optimization
blogpeople.netに登録!! スカウター : よくきたblog

My Google news

My Google News

Related site

ころんころん♪ べびぽよ フォト蔵Wiki
string(14) "/id-1149470397"