🧱 Laravelラボ

PHPフレームワーク Laravel の基礎から応用、実験までをまとめたポータル。インストール、ルーティング、コントローラ、Blade、Eloquent、テストなどをサクッと確認できます。

🗞 最新情報 更新日: 2025-08-11

概要

LaravelはPHPで最も人気のあるフレームワークのひとつ。表現力のある文法豊富な公式機能(ルーティング、ORM、キュー、イベント、認証、テストなど)で、Web開発を高速化します。

アーキテクチャ
MVC + Service Container + Facade
主要機能
Routing / Controller / Blade / Eloquent / Migration / Queue / Event / Validation / Testing
推奨環境
PHP 8.x / Composer / MySQL or PostgreSQL / Redis / Node

基本

最初に押さえるのは Routing → Controller → View(Blade) の流れ。

routes/web.php
// ルーティング(クロージャ)
Route::get('/', fn() => view('welcome'));

// Controller 経由
Route::get('/hello', [HelloController::class, 'index']);
app/Http/Controllers/HelloController.php
<?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'));
    }
}
resources/views/hello.blade.php
<!doctype html>
<html><body>
  <h1>Hello, {{ $name }}!</h1>
</body></html>

基礎

モデルとマイグレーション(Eloquent)
artisan
# モデル + マイグレーション
php artisan make:model Post -m

# マイグレーション編集後に反映
php artisan migrate
database/migrations/xxxx_create_posts_table.php
Schema::create('posts', function (Blueprint $table) {
  $table->id();
  $table->string('title');
  $table->text('body')->nullable();
  $table->timestamps();
});
app/Models/Post.php
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
# 新規プロジェクト作成
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 の関係をブラウザ上で可視化するミニ実験です。

Simulate
擬似Router
# 出力欄