Heim >Backend-Entwicklung >PHP-Tutorial >Leistungs- und Wertobjekte in Laravel Accessors

Leistungs- und Wertobjekte in Laravel Accessors

Robert Michael Kim
Robert Michael KimOriginal
2025-03-05 15:37:21458Durchsuche

Performance and Value Objects in Laravel Accessors

laravel eloquent orm verbessert die Zubehör mit integriertem Caching- und Value-Objektunterstützung, optimierender Komplexberechnungen und strukturiertes Datenmanagement. Dies führt zu einem saubereren, wartbareren Code, der für rechnerisch intensive Aufgaben oder bei der Darstellung komplizierter Datenstrukturen als Objekte anstelle von einfachen Arrays vorteilhaft ist.

.

Dieser Ansatz ist besonders nützlich für rechnerische Operationen oder bei der Darstellung komplexer Datenstrukturen als ordnungsgemäße Objekte und nicht für einfache Arrays.

Hier ist ein Beispiel, das den Standorthandling mit Wertobjekten zeigt:
<?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();
    }
}

Beispiel Verwendung:
$store = Store::find(1);
$store->location->address = '123 New Street';
$store->save();

// Access operating hours (dynamically recalculated)
$hours = $store->operatingHours;

Die Nutzung von Laravels Accessor -Funktionen bietet effiziente Lösungen für die Verwaltung komplexer Daten und die Optimierung der Leistung über strategisches Caching.

Das obige ist der detaillierte Inhalt vonLeistungs- und Wertobjekte in Laravel Accessors. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn