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

classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

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

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

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
[hidden email]
http://ml.php.gr.jp/mailman/listinfo/php-dev
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

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

Rui Hirokawa-3
廣川です。

個人的には、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
> [hidden email]
> http://ml.php.gr.jp/mailman/listinfo/php-dev


--
Rui Hirokawa <[hidden email]>
http://twitter.com/rui_hi
_______________________________________________
PHP-dev mailing list
[hidden email]
http://ml.php.gr.jp/mailman/listinfo/php-dev
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

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

Norio Suzuki
鈴木です。

いちユーザの事例としてですが、私は関数オーバーロード機能は使っていません。

5.x 系でいきなり廃止は厳しそうに思いますので、前段として、エラーログへ
NOTICE を出す対策をするのが良いと思います。


At Tue, 17 Apr 2012 23:00:27 +0900,
Rui Hirokawa wrote:
>
> 廣川です。
>
> 個人的には、func_overloadを将来のバージョンでobsoleteとすることに
> 賛成です。この機能は、海外のアプリケーションをマルチバイト対応とする

> (2012/04/17 22:45), sasezaki wrote:
> > こんにちは。させざき です。
> >
> > そこで提案として、この関数オーバーロード機能を
> > 今後のバージョンで廃止あるいは使用していた場合に警告することはできないのでしょうか?
> > と言っても今のところ、私の個人的な考えレベルなので皆様のご意見をお聞きしたい所存です。

;; ---------------------------------------------------------
;; 鈴木則夫 <[hidden email]>
;; トライコーン株式会社 http://www.tricorn.co.jp/
;; 160-6127 東京都新宿区西新宿8-17-1 住友不動産新宿グランドタワー27F
;; Tel 03-6863-5638 (内)620 Fax 03-6863-5639
_______________________________________________
PHP-dev mailing list
[hidden email]
http://ml.php.gr.jp/mailman/listinfo/php-dev
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

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

Yasuo Ohgaki
In reply to this post by Rui Hirokawa-3
大垣です。

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

オーバーロードを本家から考慮するのは予想してない使い方ですね。。

今からドキュメントして、次のバージョンでE_STRICT、その次のバー
ジョンでE_NOTICE、さらにその次ぎで廃止という感じですね。

オーバーロードだけならRunKitなどで対応できるので困ることはない
はずです。

--
Yasuo Ohgaki
[hidden email]
_______________________________________________
PHP-dev mailing list
[hidden email]
http://ml.php.gr.jp/mailman/listinfo/php-dev
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

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

Yusuke Ando-3
安藤です。

間違った方法での問題解決を実現してしまう恐れのある機能に感じます。
有効活用されている事例もみかけませんし、廃止に向けたプロセスに賛成です。

> On Wed, Apr 18, 2012 at 12:17 PM, Yasuo Ohgaki <[hidden email]> wrote:
>> 大垣です。
>>
>> 2012年4月17日23:00 Rui Hirokawa <[hidden email]>:
>>> 廣川です。
>>>
>>> 個人的には、func_overloadを将来のバージョンでobsoleteとすることに
>>> 賛成です。この機能は、海外のアプリケーションをマルチバイト対応とする
>>> ことを容易にするためのものでしたが、当初の想定を超えて使用されている
>>> ように感じます。PHP 6が予定通りにリリースされていれば既に用済みだった
>>> はずですが、現状では互換性を担保することが課題となりそうです。
>>
>> オーバーロードを本家から考慮するのは予想してない使い方ですね。。
>>
>> 今からドキュメントして、次のバージョンでE_STRICT、その次のバー
>> ジョンでE_NOTICE、さらにその次ぎで廃止という感じですね。
>>
>> オーバーロードだけならRunKitなどで対応できるので困ることはない
>> はずです。
>>
>> --
>> Yasuo Ohgaki
>> [hidden email]
>> _______________________________________________
>> PHP-dev mailing list
>> [hidden email]
>> http://ml.php.gr.jp/mailman/listinfo/php-dev
_______________________________________________
PHP-dev mailing list
[hidden email]
http://ml.php.gr.jp/mailman/listinfo/php-dev
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

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

sasezaki
させざき です。
みなさまご返答ありがとうございます。

誤って設定される環境をまず減らす意図も含め、
大垣さんの仰られるとおり、まずドキュメントに
(「注意:
このオプションを使用した場合、運用環境全てに影響を与えます。 使用するアプリケーションによっては不具合を引き起こす可能性があります。」
などといった形でしょうか。)
と記載させて頂けると、ありがたいです。


2012年4月18日17:59 Yusuke Ando <[hidden email]>:

> 安藤です。
>
> 間違った方法での問題解決を実現してしまう恐れのある機能に感じます。
> 有効活用されている事例もみかけませんし、廃止に向けたプロセスに賛成です。
>
>> On Wed, Apr 18, 2012 at 12:17 PM, Yasuo Ohgaki <[hidden email]> wrote:
>>> 大垣です。
>>>
>>> 2012年4月17日23:00 Rui Hirokawa <[hidden email]>:
>>>> 廣川です。
>>>>
>>>> 個人的には、func_overloadを将来のバージョンでobsoleteとすることに
>>>> 賛成です。この機能は、海外のアプリケーションをマルチバイト対応とする
>>>> ことを容易にするためのものでしたが、当初の想定を超えて使用されている
>>>> ように感じます。PHP 6が予定通りにリリースされていれば既に用済みだった
>>>> はずですが、現状では互換性を担保することが課題となりそうです。
>>>
>>> オーバーロードを本家から考慮するのは予想してない使い方ですね。。
>>>
>>> 今からドキュメントして、次のバージョンでE_STRICT、その次のバー
>>> ジョンでE_NOTICE、さらにその次ぎで廃止という感じですね。
>>>
>>> オーバーロードだけならRunKitなどで対応できるので困ることはない
>>> はずです。
>>>
>>> --
>>> Yasuo Ohgaki
>>> [hidden email]
>>> _______________________________________________
>>> PHP-dev mailing list
>>> [hidden email]
>>> http://ml.php.gr.jp/mailman/listinfo/php-dev
> _______________________________________________
> PHP-dev mailing list
> [hidden email]
> http://ml.php.gr.jp/mailman/listinfo/php-dev
_______________________________________________
PHP-dev mailing list
[hidden email]
http://ml.php.gr.jp/mailman/listinfo/php-dev
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

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

Tomoyuki Asakawa
In reply to this post by sasezaki
あさかわです。

私も関数オーバーロード機能は使っていません.
じぶんが使ってないからというわけではないですが、廃止に賛成です。

ところで。

On 2012/04/17, at 22:45, sasezaki wrote:

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

そもそも、strlenを、バッファカウント用につかうのが間違いなわけで。
過去に議論になっていたなあとおもって検索したら。

自分の発言でした。。。。(2002年..)

[PHP-dev 278] strlen()ドウする問題
http://ml.php.gr.jp/pipermail/php-dev/2002-April/000277.html


_______________________________________________
PHP-dev mailing list
[hidden email]
http://ml.php.gr.jp/mailman/listinfo/php-dev
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

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

dsxack
This post has NOT been accepted by the mailing list yet.
Loading...