7
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PHP ぼやき日記 2023-12-12

Last updated at Posted at 2023-12-12
  • 次回

  • Qiita ガイドライン的にはスレスレな気もしつつ、まあ絶対に日記を書いてはアカンということもないと思うので、試しに日記というか継続的殴り書きをやってみる

  • 毎日やるぞみたいな意気込み感はあまりないし、飽きたり疲れたりしたらやめるし、書く余裕がないくらい忙しい時は書かない

PHP_CodeSniffer (phpcs) の 3.8.0 が出た

FrankenPHP の 1.0 が出た

  • https://frankenphp.dev/
  • 新しい SAPI
  • Go 製の Caddy を前段に置いて ZTS な処理系が PHP 処理をがんばる構成
  • リクエスト間で状態をリセットしない worker モードがある
  • ZTS なので ZTS 固有の問題を踏む場合はありそう
  • 通常の CLI を使う RoadRunner とくらべると opcache がまともに使えてメモリ消費をややおさえやすいのが利点か
    • なお RoadRunner 側では issue は出ている
      • だいぶ前に RoadRunner の Discord で「opcache 効いてないけどこうすればできるよ」みたいな話を rustatian のひとにしたことがある
      • なお最近はその Discord のほうで「もう俺 php-src 側に Windows 以外でも関係ないプロセス間で SHM 共有できるようにする修正入れよっかな」ってボヤいてた

PHP アプリケーションをワンバイナリで配布できるやつ

  • https://github.com/crazywhalecc/static-php-cli
  • musl libc 使った静的リンクワンバイナリな PHP 処理系に exe packer みたいな奴で php ファイルや phar を抱き合わせるとアプリケーション丸っとワンバイナリで配布できますねというやつ
  • これを使った FrankenPHP の機能で Web アプリをワンバイナリで配布するみたいなのもある
  • わりと夢が広がるのだが FFI は動的リンク前提なので、たとえば FFI で自身の libc にアクセスするみたいなのが普通にはできない

New "PECL"

Reddit で「final やめろよ!継承できないだろ!」って吠えてる外人がいて朝から笑った

  • https://www.reddit.com/r/PHP/comments/18g007i/stop_using_final_classes/
  • あわせて読みたい 前に訳した奴
  • A「継承できないから final やめろ!」
    B「うるせえ Decorator を使え!」
    A「それだと変えたい部分以外を素通しするだけのボイラープレートを沢山書かなきゃいけなくなるだろ!」
    B「でけーからだよ public interface が!小さく切れ!」
    A「今いわれても手遅れなんだよ!」
    みたいな決して交わらない世界がある
  • 常時 final 使いましょう、というのは「基本 interface に依存させつつ継承より合成でいきましょう」みたいなオブジェクト指向矯正ギブス的な修行の一種
  • 公開ライブラリはともかくアプリケーションコードの場合、「継承を考えナシに使うのは避けましょう」という話だけチーム内で合意できていれば別に final 使わなくてもいい(し、それだとコード上の interface 切るの後回しにして雑に書きながらモックできる)と思っており、惣菜をパックのまま食卓へ出すネタに近いところがある
7
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?