🙄

今週の PHP 2024-04-20 〜 2024-05-03

2024/05/02に公開

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

Internal

承認されたRFC

いっぱいあるのでまとめます!

PHP: rfc:raising_zero_to_power_of_negative_number

0に対して負の数の乗数を指定した場合の挙動をDivisionByZeroErrorにしましょうというRFCです。IEE754の仕様に合わせるものです。

PHP: rfc:deprecate-get-post-sessions

GETとPOSTでSESSION IDをパラメーターに含めるオプションを非推奨にしましょうというRFCです。時代は進む。

[RFC] [VOTE] Release cycle update - Externals

今よりもPHPのセキュリティサポートの期間が1年伸びることが確定しました。細かい記述など、今後対応して行くようです。PHPカンファレンスでのサポートバージョンの図が横に長くなりそうですね!

PHP: rfc:property-hooks

マジっすか!というやつが承認されました。

論より実例!以前はマジックメソッドを使ってやっていたことを、プロパティに明確に紐づけて書けるようになります。 Swift, C#, Kotlinなどから由来する機能性とのことです。

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;
    }
}

投票が開始されたRFC

PHP: rfc:class-naming-acronyms

メソッド名、クラス名の標準記法を定めましょうというRFCです。例を見るのが手っ取り早いです。

良いメソッド名

connect()
getData()

悪いメソッド名

get_Data()
buildsomewidget()

良いクラス名

Curl
CurlResponse
BtreeMap // B-tree Map

悪いクラス名

curl
curl_response
HTTPStatusCode

承認されそうですね。

PHP: rfc:support_object_type_in_bcmath

BCMathのOperator Overloadくる〜〜〜。丁寧な議論されていたので、いい感じに進みそうかなと思ってます。今のところは承認されそうな雰囲気が醸し出されていますね。

Proposal to Create a MariaDB Alias for the MySQL PDO Driver - Externals

PDO DriverにMySQLとは別にMariaDBのNamespaceを作ろうという話です。界隈の噂で聞くと、MariaDBはMySQLとは明確に異なる機能性を持つようになってきているとのことなので、良いことだと思います。internalsでも PDO subclass names - Externals などの議論が進んでいて、PDOにおいてドライバー固有の機能性を吸収できるようにする方向に向かっています。

PHP: rfc:pdo_driver_specific_parsers

上の件に関連したRFCはこちらです。PDOでドライバー固有のパーサーを作れるようにしましょうというやつです。この流れはなんとなく既定路線になっている気がするので、議論が続いたのちに投票が始まることでしょう!

RFC apache2handler - Added the apache_connection_stream() function for CGI WebSockets - Externals

apache2handlerモジュールにおいて、HTTP 101 Upgradeリクエストがあった際に、ユーザー入力を取得することができないという問題点の解決を目指す議論です。最終的にはRFCが作られるようです。

WebSocketとかSPDYなどの文脈でプロトコルのシームレスな切り替えに使われるリクエストです。プロトコル切り替え時にユーザー入力が受け取れないことで、通信における情報の特定ができず、ユーザー体験に悪影響があるとかなのかな。

PHP: rfc:deprecated_attribute

非推奨を表すアトリビュートに関するRFCです。現在はPHPDOCで @deprecated を指定するのが通例ですが、アトリビュートを使うことで非推奨に関するメタ情報を詰め込めるようにする提案のようです。

例えば since みたいな情報を付加して、いつから?どのバージョンから?みたいな情報を付加できます。上手に使えば、動作中のPHPバージョンに応じて非推奨にできるという使い方ができます。

PHP: rfc:xmlreader_writer_streams

XMLReader, XMLWriter にストリームを開くメソッドを追加しようという提案です。最近使ってないので、あんまりピンときてませんが、足りないなら追加しようぜ。

Discussion