Продуктивність та об'єкти-значення в Accessors Laravel

Перекладено ШІ 2 Laravel News 02 червня, 2026

Laravel пропонує потужні можливості для роботи з доступами, завдяки яким ви зможете ефективно управляти складними даними та оптимізувати продуктивність. Дізнайтеся, як використовувати вбудоване кешування та підтримку об'єктів значень, щоб ваш код залишався чистим і легким у супроводі

```html

ORM Eloquent в Laravel вдосконалює функціональність accessor, пропонуючи вбудоване кешування та підтримку значеннєвих об'єктів. Ці можливості забезпечують ефективну обробку складних обчислень та структурованих даних, зберігаючи при цьому чистий і легко підтримуваний код.

Такий підхід є особливо корисним для операцій, що потребують значних обчислювальних ресурсів, або коли потрібно представляти складні структури даних у вигляді об'єктів, а не простих масивів.

protected function complexStats(): Attribute
{
    return Attribute::make(
        get: fn () => $this->calculateStats()
    )->shouldCache();
}

Ось приклад реалізації роботи з місцями, використовуючи значеннєві об'єкти:

<?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()
    {
        // Динамічний розрахунок на основі часової зони та поточного часу
        return $this->location->getLocalHours();
    }
}
$store = Store::find(1);
$store->location->address = '123 New Street';
$store->save();
 
// Отримання робочих годин (перерахунок щоразу)
$hours = $store->operatingHours;

Функції accessor в Laravel забезпечують потужні інструменти для обробки складних структур даних і оптимізації продуктивності завдяки інтелектуальному кешуванню.

```

Популярні

Інше, що варто прочитати

15 Оновлено 01 червня, 2026

Простий пакет RabbitMQ для Laravel

Вам цікаво дізнатися, як спростити інтеграцію RabbitMQ у вашому Laravel-додатку? У нашій статті ми розглянемо пакет Simple RabbitMQ, який дозволяє легко налаштувати багатозʼєднання, публікувати повідомлення та обробляти черги за допомогою простого синтаксису. Читайте далі, щоб дізнатися більше!

41 Оновлено 01 червня, 2026

Що нового в PHP 8.5

PHP 8.5 обіцяє безліч нових можливостей, таких як оператор Pipe, функції `array_first()` та `array_last()`, а також нове розширення URI. Чи готові ви дізнатися, як ці функції можуть спростити вашу розробку? Читайте далі, щоб дізнатися більше про ці захоплюючі нововведення

20 Оновлено 01 червня, 2026

Створення MCP-серверів на PHP

Модельний контекстний протокол (MCP) відкриває нові горизонти в інтеграції AI-додатків з PHP. Дізнайтеся, як легко створити сервер, що відповідає MCP, та які можливості відкриваються для вашого проєкту