🐷

今週の PHP 2024-02-17 〜 2024-02-23

2024/02/28に公開

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

Internal

PHP: rfc:mb_ucfirst

マルチバイト版の ucfirst lcfirst 関数の追加についてですが、RFCの中身に変更があったため再投票が始まりました。

いずれにしろ、可決は固そうな気がしますね。

What's up with emails? - Externals

最近、メールサーバーを移動したらしいのですが、そのせいでGmail宛のinternalのメールが弾かれているようです。SPFレコードが悪さしているよなどのアドバイスが出ています。

ひとまず、私達は externals.io で内容を確認できるので良しとしましょう。

PHP: rfc:property-hooks

帰ってきた Property hooks です。
以前も熱い議論が交わされました。コード例を見るのが一番早いのですが、下記のようにメソッド定義することなくpropertyに対して追加の振る舞いを足すことができます。

class User 
{
    public string $name {
        set {
            if (strlen($value) === 0) {
                throw new ValueError("Name must be non-empty");
            }
            $this->name = $value;
        }
    }
 
    public function __construct(string $name) {
        $this->name = $name;
    }
}

議論は細かい表記方法などに及んでいますが、肯定もなく否定もなくという感じで進んでいます。確かに便利そうだけど、これに明確にYESって言うのは勇気がいるかもしれない。

今後の展開に期待しましょう。

ArrayAccess and array_key_exists function - Externals

array_key_exists の第二引数として ArrayAccess を扱えるようにしませんか?というお便り。

ArrayAccessは、キーの反復処理ができないので様々な配列関数と動作しないが....これはできるようにしたいということのようです。

ArrayAccess自体を自分のソースコードで使った経験があんまりないので、ピンと来てないのですが、これは良いのではと思いました。

Resolving self and parent types at compile time - Externals

コンパイル時に自身と親の型が解決できるようにしたいのだがというお便り。ReflectionTypeで反変・共変をチェックするようなメソッド追加のために必要ということです。

内部実装には詳しくないので、コメントできないけど、後方互換性保てるならいいじゃねという小並な意見です。

New ext-dom features - Externals

DOM拡張について、追加で議論されているようです。この辺、あんまり詳しくないのでスルーしてますが、標準に合わせていこう運動だと思うので、基本肯定的に見てます。

Discussion