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

Rui Hirokawa rui.hirokawa @ gmail.com
2012年 4月 17日 (火) 23:00:27 JST


廣川です。

個人的には、func_overloadを将来のバージョンでobsoleteとすることに
賛成です。この機能は、海外のアプリケーションをマルチバイト対応とする
ことを容易にするためのものでしたが、当初の想定を超えて使用されている
ように感じます。PHP 6が予定通りにリリースされていれば既に用済みだった
はずですが、現状では互換性を担保することが課題となりそうです。

(2012/04/17 22:45), sasezaki wrote:
> こんにちは。させざき です。
> 
> 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 mailing list
> PHP-dev @ php.gr.jp
> http://ml.php.gr.jp/mailman/listinfo/php-dev


-- 
Rui Hirokawa <rui.hirokawa @ gmail.com>
http://twitter.com/rui_hi


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