Нерухомі значення об’єктів у PHP та Laravel за допомогою пакету Bags

Перекладено ШІ
Оригінал: Laravel News
Оновлено: 09 січня, 2025
Вам цікаво дізнатися, як зробити свої PHP-об'єкти незмінними та безпечними за типами? У нашій статті про пакет Bag для Laravel ви знайдете корисні поради та приклади, як просто реалізувати ці можливості у вашому коді

Bag — це пакет для PHP та Laravel, призначений для незмінних значень об'єктів. Він був створений з натхненням від пакету laravel-data від Spatie. Цей інструмент дозволяє створювати незмінні об'єкти, які безпечно обробляють дані, використовуючи типізацію, кастинг даних і вбудовану валідацію. Bag може слугувати заміною звичайним масивам у вашому коді, забезпечуючи типову безпеку.

use Bag\Bag;

readonly class MyValue extends Bag {
    public function __construct(public string $name, public int $age) {}
}
 
$value = MyValue::from([
    'name' => 'Davey Shafik',
    'age' => 40,
]);
 
// Створюємо новий екземпляр з іншим значенням
$newValue = $value->with(age: 41);

Bag також інтегрується з Laravel, використовуючи стандартні Collection і Validation у значеннях об'єктів, а також Eloquent кастинг та можливість впроваджувати Bag об'єкти в контролери з валідацією:

use Bag\Attributes\Laravel\FromRouteParameter;
use Bag\Bag;

class MyValue extends Bag
{
    #[FromRouteParameter()]
    public string $id;
}
 
// MyValue $value буде мати заповнений параметр маршруту `id`
class MyController extends Controller {
    public function store(MyValue $value) {
        // $value є валідованим MyValue об'єктом
    }
}

Цей пакет також включає команду Artisan для генерації Bag, використовуючи команду make:bag.

# Основні характеристики

Для початку роботи з Bag ознайомтеся з документацією, а вихідний код доступний на GitHub за адресою dshafik/bag.