Laravel Eloquent ORMは、キャッシュおよびバリューオブジェクトのサポート、複雑な計算、構造化されたデータ管理を備えた、組み込みのキャッシュおよびバリューオブジェクトのサポートを備えたアクセサを強化します。これにより、よりクリーンで保守可能なコードが得られます。特に計算集中タスクに有益です。または、複雑なデータ構造を単純な配列の代わりにオブジェクトとして表現する場合。
このアプローチは、計算的に高価な操作や、複雑なデータ構造を単純な配列ではなく適切なオブジェクトとして表す場合に特に役立ちます。値オブジェクトを使用した場所の取り扱いを示す例:
の例:
<?php namespace App\Models; use App\ValueObjects\Location; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Casts\Attribute; class Store extends Model { protected function location(): Attribute { return Attribute::make( get: fn ($value) => new Location( latitude: $this->latitude, longitude: $this->longitude, address: $this->address, timezone: $this->timezone ), set: function (Location $location) { return [ 'latitude' => $location->latitude, 'longitude' => $location->longitude, 'address' => $location->address, 'timezone' => $location->timezone ]; } )->shouldCache(); } protected function operatingHours(): Attribute { return Attribute::make( get: fn () => $this->calculateHours() )->withoutObjectCaching(); } private function calculateHours() { // Dynamic calculation based on timezone and current time return $this->location->getLocalHours(); } }
Leverraging Laravelのアクセサア機能は、複雑なデータを管理し、戦略的キャッシングを介してパフォーマンスを最適化するための効率的なソリューションを提供します。
以上がLaravelアクセサのパフォーマンスと価値のオブジェクトの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。