概要
LaravelはPHPで最も人気のあるフレームワークのひとつ。表現力のある文法と豊富な公式機能(ルーティング、ORM、キュー、イベント、認証、テストなど)で、Web開発を高速化します。
アーキテクチャ
MVC + Service Container + Facade
MVC + Service Container + Facade
主要機能
Routing / Controller / Blade / Eloquent / Migration / Queue / Event / Validation / Testing
Routing / Controller / Blade / Eloquent / Migration / Queue / Event / Validation / Testing
推奨環境
PHP 8.x / Composer / MySQL or PostgreSQL / Redis / Node
PHP 8.x / Composer / MySQL or PostgreSQL / Redis / Node
基本
最初に押さえるのは Routing → Controller → View(Blade) の流れ。
// ルーティング(クロージャ)
Route::get('/', fn() => view('welcome'));
// Controller 経由
Route::get('/hello', [HelloController::class, 'index']);
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class HelloController extends Controller
{
public function index(Request $request){
$name = $request->query('name', 'Laravel');
return view('hello', compact('name'));
}
}
<!doctype html>
<html><body>
<h1>Hello, {{ $name }}!</h1>
</body></html>
基礎
モデルとマイグレーション(Eloquent)
# モデル + マイグレーション
php artisan make:model Post -m
# マイグレーション編集後に反映
php artisan migrate
Schema::create('posts', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->text('body')->nullable();
$table->timestamps();
});
class Post extends Model
{
protected $fillable = ['title','body'];
}
バリデーション
// Controller
$request->validate([
'title' => ['required','string','max:80'],
'body' => ['nullable','string'],
]);
ミドルウェア
// 例: 認証が必要なルート
Route::middleware('auth')->group(function(){
Route::get('/dashboard', DashboardController::class);
});
導入
# 新規プロジェクト作成
composer create-project laravel/laravel example-app
cd example-app
php artisan serve # http://127.0.0.1:8000
開発に便利な設定
.envで DB 接続・APP_KEY を調整- Node 利用:
npm install && npm run dev(Vite) - IDE: PHPStan/Psalm, Pint, Xdebug を導入
最新情報
公式ブログやリリースノートをチェックする想定のスペース。ここではサンプルJSONから描画しています。
読み込み中…
フィード差し替え方法
実運用ではサーバー側で公式RSS/AtomやGitHub Releasesを取得して JSON 化し、下記の window.__LARAVEL_NEWS__ を差し替えてください。
応用
- API開発: Route::apiResource と Sanctum/Passport でトークン認証
- キュー: Redis + Horizon を使った非同期処理
- イベント / リスナ: ドメインイベントで疎結合に
- ファイルストレージ: S3 連携、署名付きURL
- メール: Mailable + Queue で高速化
発展
- DDD/クリーンアーキ: ユースケース層/リポジトリ分離
- マルチテナント: スコープ + 中間DB
- Observability: Telescope / OpenTelemetry / ログ設計
- スケーリング: Octane / RoadRunner / Swoole
PHPとLaravel
PHP8 の属性、型、マッチ式などの恩恵を受けると、Laravel コードはさらに明瞭になります。
// PHP 8: 属性 + コンストラクタプロモーション 例
class CreatePostRequest
{
public function __construct(
#[NotBlank] public string $title,
public ?string $body = null,
){}
}
Laravel実験
実行はできませんが、ルーティング → コントローラ → Blade の関係をブラウザ上で可視化するミニ実験です。
擬似Router
# 出力欄