インフィニットループ 技術ブログ

2023年02月10日 (金)

著者 : s-igarashi

不定期刊行 PHP ニュース 2023年2月10日号

インフィニットループ仙台支社のプログラマー、いがらしです。
PHP 界隈の気になったことをまとめ、不定期に宮城県仙台市からお送りします。前回出したのは昨年 11 月 29 日でした。

※ なお、画像のPHP ロゴは作者の Colin Viebrock さんによってリリースされ、CC BY-SA 4.0ライセンスされているものです。

php-src / internals

PHP 8.2 Released!

  • PHP 8.2 がリリース
  • 現在は 8.2.2 まで出ている

All PHP 7.x versions are now EOL

  • PHP 7.4 のサポートが終了

PHP RFC: Readonly amendments

  • PHP 8.2 で入った readonly class の修正提案の投票が終了
  • 非 readonly で継承可能にするほうは 7:12 で否決
  • clone 時の readonly プロパティ再初期化は 26:0 で PHP 8.3 向けで受理

PHP RFC: Dynamic class constant fetch

  • 動的なクラス定数参照が PHP 8.3 向け 15:4 で受理された

PHP RFC: Asymmetric Visibility

  • 非対称可視性の投票は 14:12 で否決

[PHP_DEV] [RFC] Add file_descriptor() function

  • ストリームからファイルディスクリプタを取れるようにする提案
  • Windows でどうするという話がないように見えるのが少し気になる

[RFC] Path to Saner Increment/Decrement operators

  • PHP の int / float 以外へインクリメント / デクリメントを使った場合の挙動修正提案
  • += 1 などとする場合とくらべて挙動に一貫性がなかった

[RFC] Saner array_(sum|product)()

  • PHP の array_sum と array_product の挙動修正提案
  • 現状は要素に配列やオブジェクトを渡すと無視する謎の挙動がある
  • array_reduce で同等品を実装しようとする場合と挙動が異なる
  • イミフだから直そうぜという話

Measuring Proposal Reaction

  • PHP で STDOUT と STDERR を cli 以外でも定義するという提案
  • RFC 起草前の意見聞きと見える
  • 悪くはないと思うものの、STDERR や STDOUT でないものをそう呼ぶのははたして適切なのかなという気もする

[RFC] [Discussion] Typed class constants

  • 型付クラス定数の提案
  • PHP の定数はオーバーライドが可能だが、型宣言ができないので子クラスで型ごと互換性のない値に変わる可能性がある
  • 定数での型宣言を可能にするとともに、covariant として子クラスで型を狭くするのは可能とする
    • 定数は読み込み専用なので返り値と同様の制約でよいという話
    • private の場合は子クラスに波及しないので制約なし

Official Preprocessor

  • 言語に公式プリプロセッサを導入する議論
  • 静的解析のような機能を導入しやすくなる
  • 良い案だとは思うものの、もっと具体化された提案でないと議論を広げるのは難しそうに見える

PHP 9 向けに JIT が書き直されている

PHP build for the wasm32-wasi target

  • VMWare CTO 室の WasmLabs チーム代表者からの PHP internals へのメール
  • 彼らは PHP を wasm32-wasi 上で動かすのに取り組んでおり、成果を upstream へ入れたがっているらしい
  • RubyPython についてもすでに同様の取り組みが行われている
  • 主には sandbox 化によるセキュリティと移植性向上(配布・デプロイの単純化)あたりが狙いに見える?
  • 参考: https://wasmlabs.dev/articles/docker-without-containers/

PHP-FIG

PER coding style | Update Short Closures spec to remove space after fn keyword

  • PSR-12 後継の PER coding style で、fn の直後にスペースを付けてはならないとする条項が追加
  • 既存プロジェクトの利用状況としてはスペースを付けてるものが微妙に多いようで、意思決定プロセスとしてこれでいいのかというのが少し気になる

気になったプロジェクト

https://github.com/sebastianbergmann/phpunit/

  • PHPUnit 10 がリリース
  • TestListenerTestHook が新しいイベントシステムへ置き換えられた影響は大きい筈
  • 周辺ツール類の対応状況を見ての慎重な更新が必要そう

https://github.com/bmewburn/vscode-intelephense

https://github.com/vimeo/psalm

  • Psalm 5.0.0 がリリース
  • その後短めのサイクルで機能追加が続き、現在の最新安定版は 5.6.0
  • デフォルトで shapes の余分なキーをはじくようになった件についての解説などがリリース記事
  • properties-of<T> など各種の新機能が追加されている

https://github.com/PHP-DI/PHP-DI

  • PHP-DI 7.0 released
  • PHP-DI 7.0 は PHP 8 以降に対応
  • @inject のかわりに #[Inject] を使う
  • PSR-11 2.0 互換になった

https://github.com/amphp/amp

TestGen AI

https://github.com/orhanerday/open-ai

  • OpenAI GPT-3 API を叩く PHP SDK

https://github.com/ara-lang

https://github.com/php-rust-tools/parser

  • Rust 製な PHP の手書きパーサの開発が進んでいる
  • PSL 等の azjezz さんがけっこうコミットしている
  • Generics の独自サポートも入れる気があるもよう

https://github.com/slackhq/hakana

  • Hakana: Taking Hack Seriously
  • Hack 用の静的解析器 Hakana を slack が公開
  • 作ったのは Vimeo から転職した Psalm 作者の人
  • Hack 公式ではできないようなカスタマイズ可能な静的解析やセキュリティ解析機能が嬉しいもよう

https://github.com/solcloud/Counter-Strike

  • Free online multiplayer FPS game
  • CounterStrike 風のゲームのエンジンを PHP で書いたというもの
  • UI は electron を使っているものの、サーバ側のレンダリング結果をそのまま出しているだけらしい

最近に見た英語記事

Performance boost with PGO

PHP version stats: January, 2023

Yii3 Overview 1. Intro

Managing database migrations safely in high replicated k8s deployment.

New in Rector 0.15: Complete Safe and Known Type Declarations

Devenv: Compose a Developer Environment easily for PHP with Nix

What’s Next in PhpStorm: The 2023.1 Public Roadmap

PhpStorm 2022.3 の変更点

  • PhpStorm 2022.3 が出て新しい UI が使えるようになった(やや VSCode ライク?)

コミュニティの議論など

Why You Should Use Psalm for PHP

Poll: usage of the Data Structures extension

What is your #1 PHP feature request? (Part 3)

Unit testing tips by examples in PHP

Reading the 8.2 Migration guide…

他のニュースサイトなど

PHP Annotated – January 2023

PHP Annotated – December 2022

書籍

Swooleで学ぶPHP非同期処理 ~並行処理/並列処理の基礎から実践的な開発手法まで一気にわかる

ちょうぜつソフトウェア設計入門――PHPで理解するオブジェクト指向の活用

Events

PHPerKaigi 2023

PHPカンファレンス福岡2023

前回に引き続き、最近あった出来事をまとめてみました。「毎月出すぞ!」というようには気負わず、不定期に続けていければと思います。最近は 8.2 向けの作業が落ち着いてきて、コア開発者の間で 8.3 向け RFC の提案や議論が活発化しているようです。

インフィニットループでは、PHP の最新技術動向や技術者のお祭りが気になるエンジニアを募集しています。 詳しくはこちらの求人詳細をご覧ください → 採用情報ページ仙台支社特設ページはこちら

ブログ記事検索

このブログについて

このブログは、札幌市・仙台市の「株式会社インフィニットループ」が運営する技術ブログです。 お仕事で使えるITネタを社員たちが発信します!