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.