Любите загадки? Событие еще доступно на сайте.

Hesko

22 677 Монеток

Laravel 12 и Laravel Cloud

Тейлор демонстрирует Laravel Cloud

На конференции Laracon US в прошлом году Тейлор анонсировал Laravel Cloud, а на Laracon EU показал новую рабочую версию этого продукта. Сейчас стали известны тарифы и дата релиза.

Тарифы Laravel Cloud

Laravel Cloud будет доступен в трех тарифах:

  • Песочница (Оплата только за использование ресурсов)
  • Продакшн ($20 в месяц плюс скидки за использование)
  • Для крупных компаний

Цены на услуги в тарифе Песочницы:

  • Включает 3 пользователя
  • Вычислительные ресурсы (ЦП/Память) — примерно $5 в месяц
  • Serverless Postgres — $0.04 в час / $1.50 за 1 GB
  • Кэш — около $7 в месяц
  • Объектное хранилище — $0.02 за 1 GB

Напомним в начале сентября Laravel привлек $57 млн в рамках раунда Series A от Accel.

Когда будет запуск?

Laravel 12 и Laravel Cloud официально выйдут 24 февраля 2025 года.

Мажорный релиз не будет включать критических изменений, и обновление должно пройти довольно гладко.

Основой Laravel 12 станут новые стартовые наборы, которые предложат возможность выбрать чистую установку или настроить желаемый стек технологий с использованием React, Vue или Livewire.

В стартовых наборах будут доступны компоненты Shadcn, а для стека Livewire — бесплатная версия компонентов Flux.

Каждый стартовый набор будет загружаться из отдельного репозитория на GitHub и установлен напрямую в ваше приложение. Это обеспечит полный контроль над кодом, а не спрятанное его размещение внутри папки vendor, как у обычных пакетов.

Кроме того, будет представлен новый дизайн сайта laravel.com.

Как создать свой атрибут для внедрения зависимостей в Laravel

В статье “Обзор атрибутов Laravel: что и как использовать” осуждали возможность упрощения внедрения зависимостей с помощью атрибутов. Однако ограничиваться только стандартными атрибутами Laravel не обязательно. Можно создать собственный атрибут, который будет выполнять нужную нам задачу.

Пример создания атрибута, который автоматически подтягивает значения из конфигурации, то есть быть похожим на хелпер config():

Для начала создадим класс MyConfig, который реализует интерфейс Illuminate\Contracts\Container\ContextualAttribute. Это необходимо для того, чтобы контейнер мог с ним работать.

namespace App\Attributes;

use Attribute;
use Illuminate\Contracts\Container\Container;
use Illuminate\Contracts\Container\ContextualAttribute;

#[Attribute(Attribute::TARGET_PARAMETER)]
class MyConfig implements ContextualAttribute
{
    public function __construct(
        public string $key,
    ) {}

    public static function resolve(self $attribute, Container $container)
    {
        return $container->make('config')->get($attribute->key);
    }
}

Теперь атрибут #[MyConfig] готов. Используем его, например, для автоматической подстановки имени приложения в контроллере:

namespace App\Http\Controllers;

use App\Attributes\MyConfig;

class ExampleController extends Controller
{
    public function __construct(
        #[MyConfig('app.name')] protected string $appName
    ) {}

    public function show(): string
    {
        return "Имя приложения: {$this->appName}";
    }
}

Конечно в Laravel уже имеется атрибут Config, но главное, что этот пример легко адаптировать под другие задачи, такие как подстановка API-ключей, флагов и т.п. Попробуйте применить подход в своём проекте и поэкспериментировать – скорее всего, вы найдете несколько мест, где такой подход будет полезен.