FrankenPHP moving under the PHP GitHub organization PHP Foundationは、今後FrankenPHPを直接サポートすることを決定しました。 そもそもFrankenPHPってなに? FrankenPHPは、簡単に言うとPHPの実行環境です。 いま普通にLinuxサーバでPHPを動かそうと思ったら、WebサーバとしてApacheかNginxをインストールして、そこにPHPを連携させて動かす、みたいなことをやる必要があってたいへん面倒です。 FrankenPHPはWebサーバ機能も持っているので、FrankenPHPをインストールすれば即Webサーバを立ち上げることができます。 Nodeだと でPHPのWebサーバが動くということです。 すごいですね。 まあ実のところはCaddyというWebサーバを同梱しているだけみたいですが。 さてこ
Introduction: What is the Single Action Handler Pattern? In modern PHP web development, the Single Action Handler (often implemented as an Invokable Controller or specifically as a PSR-15 Request Handler) represents a shift towards more focused, decoupled, and testable code, especially for APIs and specific web actions. This pattern moves away from traditional Model-View-Controller (MVC) structure
2025/03/21-23 に中野セントラルパークカンファレンスで開催された PHPerKaigi 2025 にて、「php-fpm がリクエスト処理する仕組みを追う」を発表してきました。 発表資料 AI ツールの活用 事前確認 登壇サポート さいごに 発表資料 php-fpm が FastCGI リクエストを処理する仕組みを gdb によるステップ実行デモを中心にお話ししました。 gdb を使ったデモは概ね好評だったようで、仕組みを知ることの楽しさが共有できて嬉しかったです。技術の楽しさを共有できるのはこうしたイベントの良さの一つですね。構想段階ではデモは一部のみにして、スライドによる解説をメインにしようと思っていたのですが、紆余曲折を経てデモをメインにすることにしました。デモは見る側としても面白いですし、やっていても楽しいです。その場の状況に応じて臨機応変に対応しやすいのも良いですね。
まあPHP以外の言語でも普通に可能ですが。 ということで、帰り値の受け取りを強制するアトリビュート#[\NoDiscard]が提唱されました。 既に受理されており、PHP8.5から使用可能になります。 PHP RFC: Marking return values as important (#[\NoDiscard]) Introduction 現代のPHP APIで採用されるエラー処理メカニズムは例外です。 このメカニズムでは、失敗したときの処理を行わないかぎり非常に明白なエラーが発生します。 しかし、全てが成功もしくは失敗だけのどちらかだけではなく、部分的に成功というステータスを取りたい場合もあるでしょう。 この場合は返り値によって対応することができます。 しかしその場合、返り値をチェックしなければサイレントなエラーが起きてしまう可能性もあります。 APIによっては滅多にエラーが起きな
モチベーション 今後MCPサーバーをつくれないといけない(諸説ある) PHPでかけないといけない(主観) PHPにはSDKがない(まあ当然か??) だれも(シンプルな)PHPでかいてない…参考にならない… https://github.com/topics/mcp-server?l=php (Laravel…?なぜ…?) Tips ゼロから書くと詰む(AI活用しても永遠に接続や通信エラーが消えない) 「SSEは実装できそうだし、STDIOな実装なら楽やろ」からの半日消費 Python サンプルを順番に参考にした Model Context Protocol Servers (MIT License) Model Context Protocol Python SDK (MIT License) 特にライブラリのSDKがないと無理ゲーだった、コピった。 「エラーが読みづらすぎる!!!」 「デ
$ fennec help -------------------------------------------------------------------------- /\ /\ | //\\_//\\ ____ | Fennec 🦊 is an all-in-one, oxidized PHP toolchain, \_ _/ / / | built to handle everything from static analysis and / * * \ /^^^] | refactoring to full project management. \_\O/_/ [ ] | / \_ [ / | \ \_ / / | [ [ / \/ _/ | https://carthage.software/fennec _[ [ \ /_/ | ------------------
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? PHPのexit()は関数ではなく言語構造です。 という話は有名なのですが、PHP8.4でこれが変わります。 以下は該当のRFC、Transform exit() from a language construct into a standard functionの紹介です。 PHP RFC: Transform exit() from a language construct into a standard function Introduction 言語構造exitおよびエイリアスdieは、括弧なしの単体で使用して、PHPスクリプト
つい先日PHP8.4がリリースされたばかりだというのに、PHP8.5に搭載される新機能が早々とひとつ決まっていました。 ということで以下は該当のRFC、Support Closures in constant expressionsの紹介です。 PHP RFC: Support Closures in constant expressions Introduction いくつかのPHP機能は、定数式のみを受け入れるようになっています。 これらの式は、大まかに"不変値"とみなせる限られた演算を含めることができます。 特にアトリビュートの引数は定数式のみを受け入れる構造ですが、クロージャは許可されていません。 クロージャはPHPオペコードであり、一部機能を除けば不変値であるため、定数式とみなすことができます。 定数式としてクロージャを使用できることで、幾つかのユースケースが生まれます。 以下は
まず第三引数$modeの型がintからRoundingMode|intに変わりました。 デフォルト値もPHP_ROUND_HALF_UPからRoundingMode::HalfAwayFromZeroに変わっています。 もっとも後述しますが、RoundingMode::HalfAwayFromZeroの動作はPHP_ROUND_HALF_UPと同一であり、デフォルトの挙動が変わることはありません。 RoundingMode RoundingModeのENUMが追加されました。 これはround()および類似の関数で使用される、小数点の丸めモードを表す列挙型となります。 元々丸めモードは定数だったのですが、PHP8.4で丸めモードが8つにまで増えて定数だとたいへんだということでENUMが導入されました。 命名もわかりやすくなっています。 RoundingMode::HalfAwayFromZ
2024/12/23 にお馴染み PIO で開催された PHP カンファレンス 2024 にて、「PHP ユーザのための OpenTelemetry 入門」を発表してきました。 発表資料 PHP アプリケーションを OpenTelemetry で計装するための第一歩として、オブザーバリティやテレメトリデータなどの用語や OpenTelemetry について、そして PHP アプリケーションへの組み込みについてお話ししました。 はじめて OpenTelemetry を知る人にとっては用語など聞き馴染みが無いかもと思い、解説を入れつつだったので 25 分におさめるために苦心しました。OpenTelemetry については特に仕組み周りでネタがあるので機会があればお話ししたいです。 OpenTelemetry やオブザーバビリティに関心を持っていただく機会になれば嬉しいです。 セッションに参加し
2024.11.05「追記1:問題編」を追加しました! 2024.11.06「追記2:回答編」を追加しました! 2024.11.06 [補足]を追加しました! 前提 LaravelはWordPressからステップアップしたい人に丁度フィットしたような作りになっており、オンプレ前提であり、MVC構成の簡単なSSR(サーバーサイドレンダリング)を推しています。 WordPressの次のステップと捉えると納得できますし、小さなアプリを簡単に作るには丁度良いと思います。 しかし、これで大きなサービスを作ろうとすると途端に崩壊します。 基本的にドキュメント通りに作成すると画面とインターフェースが密結合し、サービスとしてのインターフェースが固まらない状態になります。 結果的に私が関わったプロジェクトは全て密結合で触れない状態に陥っていました… たぶん日本中、いや世界中がこうなってると思います。 決して
こんにちは。pixivのnamazuです。 先日開催されたPIXIV DEV MEETUP 2024にて、『pixivというシステムはどんな形をしているのか、それはなぜか。』というテーマで発表をさせていただきました。当日、セッションにご参加いただいた皆さま、そしてフィードバックをいただいた方々に、改めて感謝申し上げます。 Webサービス開発において面白い点の一つは、どのサービスもその要件や状況に応じて異なる選択がなされることです。結果として、類似点がある場合もありますが、細部において同じものはなく、すべてがユニークです。弊社内でもさまざまな違いが見られますが、業界全体を見渡すとさらに多様性が広がっていることでしょう。 今回の発表では、pixivのシステムに関する重要な要件や状況をいくつか取り上げ、現時点でどのような構造になっているかを、インフラストラクチャ、バックエンドアプリケーション、開
OpenTelemetry を利用して PHP アプリケーションのテレメトリデータを計装する方法をまとめました。 本エントリのコードは下記で公開しています。 github.com OpenTelemetry とは 用語 PHP アプリケーションのマニュアル計装(手動計装) 構成 OTel Collector Jaeger 動作環境 必要なパッケージ PHP コード 設定 実行 PHP アプリケーションのゼロコード計装(自動計装) 必要な拡張とパッケージ 設定 PHP コード 実行 さいごに 参照 OpenTelemetry とは opentelemetry.io OpenTelemetry は、サービスやアプリケーションのテレメトリーデータ(トレース、メトリクス、ログなど)を計装、生成、収集、送信するためのオブザーバビリティフレームワークです。ベンダーニュートラルな OSS であり、CNC
PHP8.4 / PHP8.3 / PHP8.2 / PHP8.1 / PHP8.0 2024/08/13、PHP8.4がフィーチャーフリーズしました。 言語機能に関わるような機能の追加・変更が締め切られたということです。 今後はデバッグを繰り返しながら完成度を高めていき、2024/11/21にPHP8.4.0がリリースされる予定です。 というわけでPHP8.4で実装されるRFCを見てみましょう。 RFC Property access hooks 賛成42反対2で受理。 プロパティフックです。 class HOGE{ public string $tel{ set{ if(!ctype_digit($value)){ throw new ValueError("電話番号は数値のみ"); } if(strlen($value) < 10){ throw new ValueError("電話
class HOGE{ public string $tel{ set{ if(!ctype_digit($value)){ throw new ValueError("電話番号は数値のみ"); } if(strlen($value) < 10){ throw new ValueError("電話番号は10文字以上"); } $this->tel = $value; } get{ return '電話番号は' . $this->tel; } } } $hoge = new HOGE(); $hoge->tel = '123456789012'; // OK $hoge->tel = 'abcdefghijkl'; // Uncaught ValueError: 電話番号は数値のみ $hoge->tel = '123'; // Uncaught ValueError: 電話番号は10文字以上
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く