😸

今週の PHP 2023-03-11 〜 2023-03-17

2023/05/08に公開

PHP のメーリングリストから、気になった情報をピックアップします。

Internal

Typed class constants

無事にAcceptされました。const に型が付きます。
https://wiki.php.net/rfc/typed_class_constants

Code optimization

RFC: code optimizations - Externals

Max さんからのお便り。コード改善の一連のPRに対する許可を一挙に解決しようとして作られたRFCですが、インターナルにおいては、コアコードに対する広い範囲の改善コミットは許可できない(気持ちは分かるが...みたいなニュアンス)という方向になりました。

結果として、Max さんは、もうこれ以上改善を提案することはないといって去っていきました。

これについて、一瞬皮肉めいた返信もありましたが、改善しようという意思がある人間をうまくインターナルに関与させることができなかったことについて、話し合う必要があるという意見がでています。

リリース

Bugs

Fix GH-10648: add check function pointer into mbfl_encoding by pakutoma · Pull Request #10828 · php/php-src

pakutoma さんの PR。ISO-2022-JP 周りの mb_check_encoding の挙動修正です。

mb_check_encoding() returns true for incorrect but interpretable ISO-2022-JP byte sequences · Issue #10648 · php/php-src

PHPerKaigi 2023 にて、ご本人にお聞きしたのですが、やはりお仕事で ISO-2022-JP と向き合う必要があるので、このへんのイシューに対応されているそうです。

ご苦労様です。

exif_read_data() cannot read smaller stream wrapper chunk sizes · Issue #10834 · php/php-src

exif_read_data で stream から情報を取得する際に、stream wrapper chunk size が小さいと読み取れないという不具合。

いつかハマる可能性もあるので、記憶の片隅においておきたい話です。

[PHP@master] Reflection method does not exist for private method from parent class · Issue #10840 · php/php-src

Reflectio method が private のメソッド継承を行えないという不具合報告でしたが、master で発生したものが、現在は修正されたようです。

Wrong calculation of duration in NumberFormatter on rounding up · Issue #10843 · php/php-src

NumberFormatter の NumberFormatter::DURATION が四捨五入した際におかしくなるという報告。NubmerFormatter というよりは、ICU の不具合だったようで、そちら側に不具合報告されました。

modify readonly class property with reference · Issue #10844 · php/php-src

Readonly property を参照を使うことで修正できてしまうという報告。前にも見たことあるなと思ったら https://github.com/php/php-src/issues/9432 あったっぽい。

すでに修正されています。

Check UTF-8 validity for all constant strings on compile time · Issue #10853 · php/php-src

すべてのconstに対して、コンパイル時にUTF-8の正当性チェックを行うというイシュー。
文字列のキャッシュが正当なUTF-8文字列じゃないと行われないという現状の構造に合わせた変更のようです。

  • check UTF-8 validity on compile time on every const string
  • store a flag if UTF-8 validity was checked or not

Discussion