[PHP-dev 1528] mbstringの 関数のオーバーロード機能 (func_overload) について

sasezaki sasezaki @ gmail.com
2012年 4月 17日 (火) 22:45:46 JST


こんにちは。させざき です。

mbstring の 関数オーバーロード機能について提案があります。

http://php.net/manual/ja/mbstring.overload.php
> 関数のオーバーロードを行うと、例えば substr() を PHP スクリプトでコールした場合に、
>  mb_substr() が代わりにコールされるようになります。
> これにより、マルチバイト文字に対応しないアプリケーションの移植が容易となります。
とありますが、2012年の現時点にて私個人では
このオーバーロード機能が有用に使われているケースを見ません。

非mbstringユーザ・mbstringユーザ両方でも PHPの バイナリを文字列として扱える特性から
strlen()などの文字列関数をそのままバイナリ処理に用いてるのが現状だと思われます。
そのため、func_overloadの設定によっては不具合となることがあります。

実際には、各ライブラリや各アプリケーションにてfunc_overloadの問題があったときに
個別対応していると思われます。

・CakePHPでのContent-Lengthでの事例
http://d.hatena.ne.jp/cakephper/20111101/1320113739
https://github.com/cakephp/cakephp/pull/283/files
・Symfony2 でのYamlパーサの場合
https://github.com/symfony/symfony/blob/master/src/Symfony/Component/Yaml/Inline.php#L21
・HTTP_Request2 の場合
http://svn.php.net/viewvc/pear/packages/HTTP_Request2/trunk/Request2/Response.php?revision=308629&view=markup&pathrev=309665

そこで提案として、この関数オーバーロード機能を
今後のバージョンで廃止あるいは使用していた場合に警告することはできないのでしょうか?
と言っても今のところ、私の個人的な考えレベルなので皆様のご意見をお聞きしたい所存です。

よろしくお願いします。


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