はじめに#
Relayer は polidog/use-php の上に構築された、規約重視(opinionated)の PHP フルスタックフレームワークです。Next.js App Router 風の規約で、ファイルベースルーティング・JSON API・サーバーアクション・認証・バリデーション・キャッシュ・DB をひとつの boot エントリにまとめます。
必要環境#
- PHP 8.5 以上
- Composer
polidog/use-php、Symfony の DI / Config / YAML / Dotenv(composer requireが自動で導入)
インストール#
composer require polidog/relayer
vendor/bin/relayer init
composer install
php -S 127.0.0.1:8000 -t publicvendor/bin/relayer init は public/index.php・src/Pages/・config/services.yaml・ .env などの雛形を生成します(既存ファイルは触りません)。
init は FrankenPHP の開発用コンテナ一式(Dockerfile・php.ini・ compose.yaml・.dockerignore)も生成します。ホストに PHP を入れずに起動できます。
docker compose up --build # → http://localhost:8000compose.yaml は app サービスのみの最小構成です(ソースのマウントや MySQL の db サービスはコメントで雛形化)。既定の .env が APP_ENV=dev なのでコンテナ内で .psx をオンザフライコンパイル=ビルドステップ不要。本番はこのイメージで APP_ENV を外し vendor/bin/usephp compile src/Pages を事前実行します(デプロイ 参照)。
エントリポイント#
アプリ全体はこの 1 ファイルから起動します(public/index.php)。
<?php
declare(strict_types=1);
require_once __DIR__ . '/../vendor/autoload.php';
use Polidog\Relayer\Relayer;
Relayer::boot(__DIR__ . '/..')->run();Relayer::boot() は .env を読み込み、Symfony の DI コンテナを構築し、 AppRouter を返します。->run() を呼ぶまで addCssPath() などの設定を追加できます。
最初のページ#
src/Pages/page.psx がトップページ(/)です。.psx は JSX 風の構文で書ける PHP で、 use-php がコンパイルします。
<?php
declare(strict_types=1);
use Polidog\UsePhp\Html\H;
return fn () => (
<section>
<h1>It works</h1>
<p>src/Pages/page.psx を編集してください。</p>
</section>
);ディレクトリを切ると URL セグメントになり、[id] ディレクトリは動的セグメントです。詳しくは ルーティングとページ を参照してください。
このサイトについて#
このドキュメントサイト自体が Relayer 製です。本文は Turso (libSQL)を唯一の正として保持し、bin/docs CLI から $EDITOR で直接編集します(中間の Markdown ファイルは持ちません)。サーバー側は Relayer が表示と全文検索を担当します。仕組みは デプロイ を参照。
開発と本番#
.env の APP_ENV=dev は PSX のオンザフライコンパイル・プロファイラ・トレースを有効にします。それ以外(未設定含む)は本番扱いで、デプロイ時に vendor/bin/usephp compile src/Pages で事前コンパイルします。
変更履歴 (2)
- バージョン差分表記(vX.Y.Z 追加/破壊的変更/依存バージョン注記)を削除し現在形に整理
- 新規作成