Laravel11 属性チートシート
⚠️: 海外の記事をchatGPTで要約しただけのもの、主に自分用
Laravel & Livewire PHP Attributes チートシート
この記事では、Laravel の Container Attributes と Livewire Attributes をそれぞれ個別の見出しとして整理したチートシートを紹介します。これにより、各属性の目的や使用例をすぐに確認できます。
Laravel Container Attributes
#[Auth]
認証マネージャを注入するための属性です。
使用例:
use Illuminate\Container\Attributes\Auth;
use Illuminate\Contracts\Auth\Guard;
class PhotoController extends Controller
{
public function __construct(
#[Auth('web')]
protected Guard $auth,
) {
// ...
}
}
#[Cache]
キャッシュマネージャを注入するための属性です。
使用例:
use Illuminate\Container\Attributes\Cache;
use Illuminate\Contracts\Cache\Repository;
class PhotoController extends Controller
{
public function __construct(
#[Cache('redis')]
protected Repository $cache,
) {
// ...
}
}
#[Config]
設定値を直接注入する属性です。
使用例:
use Illuminate\Container\Attributes\Config;
class PhotoController extends Controller
{
public function __construct(
#[Config('app.timezone')]
protected string $timezone,
) {
// ...
}
}
#[CurrentUser]
現在認証されているユーザーを注入するための属性です。
使用例:
use Illuminate\Container\Attributes\CurrentUser;
use App\Models\User;
class PhotoController extends Controller
{
public function __construct(
#[CurrentUser]
User $currentUser
) {
// $currentUser は認証済みユーザーのインスタンス
}
}
#[DB]
特定のデータベース接続を注入するための属性です。
使用例:
use Illuminate\Container\Attributes\DB;
use Illuminate\Database\Connection;
class PhotoController extends Controller
{
public function __construct(
#[DB('mysql')]
protected Connection $connection,
) {
// 'mysql' 接続が注入される
}
}
#[Log]
ロガーインスタンスを注入するための属性です。
使用例:
use Illuminate\Container\Attributes\Log;
use Psr\Log\LoggerInterface;
class PhotoController extends Controller
{
public function __construct(
#[Log('daily')]
protected LoggerInterface $log,
) {
// ロガーインスタンスが注入される
}
}
#[RouteParameter]
ルートパラメータを取得して注入するための属性です。
使用例:
use App\Models\Photo;
use Illuminate\Container\Attributes\RouteParameter;
class PhotoController extends Controller
{
public function __construct(
#[RouteParameter('photo')]
protected Photo $photo,
) {
// ルートパラメータ 'photo' が注入される
}
}
#[Storage]
ストレージマネージャを注入するための属性です。
使用例:
use Illuminate\Container\Attributes\Storage;
use Illuminate\Contracts\Filesystem\Filesystem;
class PhotoController extends Controller
{
public function __construct(
#[Storage('local')]
protected Filesystem $filesystem
) {
// 'local' ストレージが注入される
}
}
#[Tag]
サービスにタグを付け、後でまとめて取得するための属性です。
使用例:
use Illuminate\Container\Attributes\Tag;
class PhotoController extends Controller
{
public function __construct(
#[Tag('reports')]
protected iterable $reports,
) {
// 'reports' タグでバインドされたサービス群が注入される
}
}
Livewire Attributes
#[Computed]
Livewire コンポーネント内で「派生」プロパティを作成するための属性です。
使用例:
use Livewire\Attributes\Computed;
class UserProfile extends Component
{
public $firstName;
public $lastName;
#[Computed]
public function getFullName()
{
return "{$this->firstName} {$this->lastName}";
}
}
#[Isolate]
コンポーネントを他と分離し、サーバーラウンドトリップ時に独立して動作させる属性です。
使用例:
use Livewire\Attributes\Isolate;
#[Isolate]
class TodoList extends Component
{
// ...
}
#[Js]
JavaScript 側との直接バインディングを可能にする属性です。
使用例:
use Livewire\Attributes\Js;
class NotificationComponent extends Component
{
#[Js]
public $isVisible = true;
}
#[Layout]
コンポーネントで使用するレイアウトファイルを指定する属性です。
使用例:
use Livewire\Attributes\Layout;
#[Layout('layouts.dashboard')]
class Dashboard extends Component
{
// ...
}
#[Lazy]
コンポーネントをビューポートに入ったタイミングで読み込む遅延ロードを指定する属性です。
使用例:
use Livewire\Attributes\Lazy;
#[Lazy]
class UserProfile extends Component
{
// ...
}
#[Locked]
フロントエンドからの変更を防ぐため、特定のプロパティをロックする属性です。
使用例:
use Livewire\Attributes\Locked;
class UserSettings extends Component
{
#[Locked]
public $userId;
}
#[Modelable]
親コンポーネントから子コンポーネントへプロパティをバインドするための属性です。
使用例:
use Livewire\Attributes\Modelable;
class PostForm extends Component
{
#[Modelable]
public $title;
}
#[On]
特定のイベントに対してメソッドをバインドする属性です。
使用例:
use Livewire\Attributes\On;
class UserRegistered extends Component
{
#[On('userRegistered')]
public function handleNewUser($user)
{
// イベント発火時に実行される処理
}
}
#[Reactive]
プロパティをリアクティブにし、データ変更を子コンポーネントに自動反映させる属性です。
使用例:
use Livewire\Attributes\Reactive;
class Counter extends Component
{
#[Reactive]
public $count = 0;
public function increment()
{
$this->count++;
}
}
#[Renderless]
ビューのレンダリングを行わず、ロジック専用のコンポーネントとして動作させる属性です。
使用例:
use Livewire\Attributes\Renderless;
class FormLogic extends Component
{
#[Renderless]
public function validateForm()
{
// フォームバリデーションのロジック
}
}
#[Rule]
プロパティに対するバリデーションルールを定義する属性です。
使用例:
use Livewire\Attributes\Rule;
class RegisterUser extends Component
{
#[Rule('required|string|max:255')]
public $username;
}
#[Session]
コンポーネントのプロパティをセッションにバインドする属性です。
使用例:
use Livewire\Attributes\Session;
class UserProfile extends Component
{
#[Session]
public $theme;
}
#[Title]
コンポーネントのビューに適用されるページタイトルを設定する属性です。
使用例:
use Livewire\Attributes\Title;
#[Title('My Custom Page Title')]
class PageTitle extends Component
{
public function render()
{
return view('page');
}
}
#[Url]
現在の URL をプロパティにバインドし、動的に反映させる属性です。
使用例:
use Livewire\Attributes\Url;
class Navigation extends Component
{
#[Url]
public $currentUrl = '';
}
元記事
Discussion