Collection
Request
Response
Laravelのソースコードを変更せずに既存のクラスを拡張します 再利用可能性:
マクロを一度定義し、プロジェクト全体でそれを使用します。マクロは通常、サービスプロバイダー内で定義されます。 あなたの
で、これをメソッドに追加します:toUpper
Collection
ステップ2:マクロの使用
次に、インスタンスでAppServiceProvider
マクロを使用します:boot
<code class="language-php">use Illuminate\Support\Collection; public function boot() { Collection::macro('toUpper', function () { return $this->map(function ($value) { return is_string($value) ? strtoupper($value) : $value; }); }); }</code>
実用的なマクロの例
1。 toUpper
クラスマクロ:Collection
<code class="language-php">$collection = collect(['hello', 'world']); $upperCollection = $collection->toUpper(); // Result: ['HELLO', 'WORLD']</code>
クラスのメソッドを作成しましょう。
コントローラーで使用してください:
Request
2。
isAdmin
Request
標準化されたJSON応答のための
<code class="language-php">use Illuminate\Http\Request; public function boot() { Request::macro('isAdmin', function () { return $this->user() && $this->user()->is_admin; }); }</code>
<code class="language-php">if ($request->isAdmin()) { // User is an administrator }</code>
使用法:Response
マクロのベストプラクティス
Response
jsonSuccess
<code class="language-php">use Illuminate\Support\Facades\Response; public function boot() { Response::macro('jsonSuccess', function ($data = null, $message = 'Success', $status = 200) { return response()->json([ 'success' => true, 'message' => $message, 'data' => $data, ], $status); }); }</code>
サービスプロバイダーの使用:
整理されたコードを維持します。<code class="language-php">return response()->jsonSuccess(['user' => $user], 'User retrieved successfully');</code>
競合の名前を避けることは避けてください:既存または将来のLaravelメソッドとの衝突を防止します。
Laravel マクロは、コアコードを変更せずに機能を拡張できる強力なツールです。これらは柔軟性を提供し、カスタム メソッドを効率的に追加できます。 Collection
、Request
、または Response
のユーティリティ メソッドが必要な場合でも、マクロを使用すると開発が簡素化されます。 コードの可読性、再利用性、保守性が向上します。 Laravel にカスタム機能を追加する場合は、マクロの使用を検討してください。
以下のコメント欄でマクロの経験や質問を共有してください。 この記事を Laravel 開発者仲間と共有して、マクロの力について広めてください。 ?
以上がマクロ:Laravelの機能を拡張する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。