今週の PHP 2024-04-06 〜 2024-04-19
PHP のメーリングリストから、気になった情報をピックアップします。
Internal
PHP: rfc:property-hooks
投票始まりました!
濃密で丁寧なコミュニケーションのすえに、完全に承認されそうな勢いです。
まじかぁ、あの文法使えるんか〜〜〜!って感じです。
PHP: rfc:array_find
array_find
というは新しい関数の提案についてです。どんな内容なのかというと、下記の通りです。
function array_find(array $array, callable $callback, bool $return_array_key = false): mixed {
foreach ($array as $key => $value) {
if ($callback($value, $key)) {
return $return_array_key ? $key : $value;
}
}
return null;
}
コールバックで、配列の検索を行えるというのがポイントでしょうか。配列の中身がmixedだから、戻り値もmixedです。何も見つからなかったときはnull。うーむPHP。
[VOTE] PHP 8.4 Release Managers - Externals
原文ママですが、Sakiさんが8.4のリリースマネージャーにルーキー枠で入りました。素晴らしいですね。これ、8.4がEOLになるまでの役目なので、まじ大変なんです!みんなで応援するのだぞ!
Our "rookie" PHP 8.4 release managers are:
Calvin Buckley
Saki Takamachi
Our "veteran" is the PHP 8.3 release manager Eric Mann.
リリース
PHP: rfc:release_cycle_update
リリースサイクルが短すぎるので、セキュリティフィックスを1->2年にして、合計4年間にしましょうというRFCです。
投票が開始されました。
好意的に受けいられているようでしたが、投票もほぼ承認の方向です。
PHP: rfc:deprecate-get-post-sessions
GETとPOSTでSESSION IDをパラメーターに含めるオプションを非推奨にしましょうというRFCです。
問題なく承認されそうです。
ガラケー時代にはお世話になった人がいそうですね。
PHP: rfc:new_without_parentheses
あるあるネタですが、現状のPHPの文法ではインスタンス生成と同時にメソッド等をコールする場合は、括弧で囲む必要があります。
(new Foo())->bar();
それを、括弧で囲まなくても良いようにしようというRFCです。
new Foo()->bar();
PHPの問題というよりは字句解析の変更になりそうですね。実際のPRを見ても、parserに変更が入っています。
個人的には、後方互換性が保たれているのなら、ぜひ入れてほしい提案です。
PHP: rfc:grapheme_str_split
書記素分割のメソッド提案が承認されました。grapheme_str_split
が追加されます。
Introduce ReflectionConstant - Externals
グローバル定数を参照する専用のReflectionクラスを作りましょうというお便り&参考実装スレ。
自分は使いたいと思ったタイミングが無いのでわからんのですが、きっと必要なのだろう(すまん、わからん)
PHP: rfc:dedicated_stream_bucket
StreamBucketクラスの提案ですが承認されました。全会一致。
[proposal] max_execution_time to a negative number - Externals
max_execution_time
に負の数が設定できるのは良く無いじゃん?っていうお便り
提案としては負の数を設定したら0にする。PHP9.0ではエラーにするというものですが、この辺はRFCを立てて議論すると良さそうですね。大きすぎる値を設定した場合も予期せぬ挙動になってしまうということです。
まあ、変な値を自ら設定することはないもんね。悪意のあるコードとして実行時設定をいじられる可能性あるので、丁寧に潰しておくと良さそうと思いました。
Native decimal scalar support and object types in BcMath - do we want both? - Externals
ネイティブの10進サポートが必要なの?BcMathのオブジェクト型が必要なの?両方なの?というスレッド。いろんな話がされていまして、ZValが64bitの制限があるよとか、この先、2つの議論をどうしていくの?などです。
興味ある方は、元スレッドをじっくり読むと勉強になりそうです。
[PHP-CVS] [php-src] master: ext/mysqlnd: support ER_CLIENT_INTERACTION_TIMEOUT - Externals
MySQLの新しいエラータイプへの対応がDBALのテストを壊しているよというお便り。つまり、今後この修正が取り込まれたPHP8.2, 8.3がリリースされるとDBALが壊れる可能性があるということです。
元になった修正のイシューはこちらのようです。
https://github.com/php/php-src/pull/13618
PHP: rfc:pdo_driver_specific_parsers
PDOにDriverそれぞれに特化したパーサーを使えるようにしようというRFCです。MySQL以外のデータベースにおいて特定のリテラルでバグが出たりするようです。PHPといえばMySQLみたいな風潮がありますが、他のデータベースでも不具合が減ることは良いですね。
Incorrect terminology usage for rounding modes of round() - Externals
数値の丸めに関する言葉の使い方を修正するために、新しいenumを導入しようという話です。誤解を減らすこういう小さい改善は大切ですね。
Discussion