22 677 Монеток
На конференции Laracon US в прошлом году Тейлор анонсировал Laravel Cloud, а на Laracon EU показал новую рабочую версию этого продукта. Сейчас стали известны тарифы и дата релиза.
Laravel Cloud будет доступен в трех тарифах:
Цены на услуги в тарифе Песочницы:
Напомним в начале сентября Laravel привлек $57 млн в рамках раунда Series A от Accel.
Laravel 12 и Laravel Cloud официально выйдут 24 февраля 2025 года.
Мажорный релиз не будет включать критических изменений, и обновление должно пройти довольно гладко.
Основой Laravel 12 станут новые стартовые наборы, которые предложат возможность выбрать чистую установку или настроить желаемый стек технологий с использованием React, Vue или Livewire.
В стартовых наборах будут доступны компоненты Shadcn, а для стека Livewire — бесплатная версия компонентов Flux.
Каждый стартовый набор будет загружаться из отдельного репозитория на GitHub и установлен напрямую в ваше приложение. Это обеспечит полный контроль над кодом, а не спрятанное его размещение внутри папки vendor
, как у обычных пакетов.
Кроме того, будет представлен новый дизайн сайта laravel.com.
Веду телеграм канал про PHP "Миддл не приговор" @middle_not_final Работаю Backend разработчиком в найме
Я работаю в PhpStorm, и часто возникает необходимость где-то временно сохранить текст или сниппет, чтобы потом к нему вернуться или найти нужную информацию. Хочется сделать это быстро и без лишних размышлений, чтобы случайно этот файл не попал в Git. И вот только пару месяцев назад я нашёл удобный способ это делать, не открывая никакие заметки или второй редактор.
Существует сочетание клавиш Cmd + Shift + N
для Mac и Alt + Ctrl + Shift + Insert
для Windows Linux, которое вызывает окно для создания временного файла:
В этом окне можно выбрать любой формат или просто обычный Plain Text
. Мне удобно создавать файлы в форматах PHP, JSON, а также простые тестовые файлы. Работа с такими файлами происходит так же, как с любыми другими: их можно искать через глобальный поиск Cmd + Shift + O
или находить в списке последних редактируемых файлов Cmd + E
.
Найти все свои старые временные файлы можно в разделе Scratches and Consoles:
Этот раздел находится в панели Project в самом низу, ниже всех файлов проекта.
Как мне кажется, это очень удобно. В моём окружении никто этим не пользуется, поэтому я решил поделиться этим небольшим лайфхаком.
Кстати, там же сохраняются консоли, если вы делаете запросы в базу данных прямо из PhpStorm.
Если понравилась заметка, подписывайтесь на мой телеграм канал, там я пишу про разработку, PHP и просто про жизнь. @middle_not_final
22 677 Монеток
В статье “Обзор атрибутов 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-ключей, флагов и т.п.
Попробуйте применить подход в своём проекте и поэкспериментировать – скорее всего, вы найдете несколько мест, где такой подход будет полезен.
{message}