今週の PHP 2024-01-13 〜 2024-01-19
PHP のメーリングリストから、気になった情報をピックアップします。
Internal
PHP: rfc:improve_callbacks_dom_and_xsl
dom, xsl の拡張に対するリファクタリングに関するRFCですが、賛成多数で可決されました。Internalでも好意的なやり取りがされていたので順当な感じですね。
[RFC][Discussion] Raising zero to the power of negative number - Externals
ゼロを負の数で累乗する場合の取り扱いに関する議論と、そのRFCです。
現状の仕様はたしかに一貫性がないです。
var_dump(0 ** -1); //float(INF)
var_dump(pow(0, -1)); //float(INF)
var_dump(1 / 0); //DivisionByZeroError: Division by zero
現在のRFCでは、上記をいずれもPHP9.0までに DivisionByZeroError
に統一しようという方向で書かれています。
IEEE 754-2019 の7.3によると、0による除算は divide By Zero exception shall be signaled
と書かれているので、RFCの提案内容は合致していますね。
余談ですが、NaNってIEEE 754で定義されているんだね!!!!今回始めて知りました。
PHP: rfc:mb_ucfirst
先週、相談メールが来ていたucfirst
のマルチバイト版についてRFCが提出されました。
既存関数の安全なマルチバイト版追加です。
function mb_ucfirst(string $string, ?string $encoding = null): string
function mb_lcfirst(string $string, ?string $encoding = null): string
リリース
PHP: rfc:final_by_default_anonymous_classes
PHPの匿名クラスをデフォルトでfinalにすることに関する提案(RFC)についての議論です。
投票状況は現在59%支持なので、かなり微妙な情勢です。議論の行方次第ではなんとか滑り込めるかも...
PHP: rfc:opt_in_dom_spec_compliance
DOM拡張を仕様に準拠させるという目的のRFCです。以前Internalで相談が来ていた件がRFCとして提出された形です。細かい実装内容についてのやり取りが進んでいます。
PHP: rfc:resource_to_object_conversion
Resourceをオブジェクトに変換するRFCですが、可決されました。メジャーバージョンでの対応が支持されているのでPHP9.0がターゲットになるようです。
Dedicated StreamBucket class - Externals
stream_bucket_new()
がstdclassを生成するのはやめようというPRについての議論です。RFCとするかどうか、後方互換性維持などについて話されています。
PDO::FETCH_CONSTRUCTOR
fetch mode proposal - Externals
PDOの新しいFetchモード PDO::FETCH_CONSTRUCTOR
の提案に関する相談スレッドです。
既存のFETCH_CLASSが抱える問題点を解決し、SQLの結果をFETCHする際に、指定したクラスのコンストラクターに取得した値をセットするという挙動のようです。
相談スレッド内では、既存のFETCH_CLASSにAttributeを組み合わせる形はどうか?などの代替案も提案されています。
代替案のクラスの見た目はまさにDoctrineのEntityみたいですね。
readonly class User {
public function __construct(
#[PDOField('user_id')]
public string $userId,
#[PDOField('user_name')]
public string $userName,
#[PDOField('user_address')]
public ?string $userAddress = '', // Optional field with default value
);
}
この議論の行き着く先は不明ですが、DoctorinなどのORMがやっている処理がネイティブでサポートされるようになるかもしれないですね。面白そうな話なので、今後もウォッチしていきたいです。
Discussion