Size: a a a

2021 June 13

DZ

Daniil Zobov in Laravel Pro
Некоторые конторы с бабками рано или поздно придут к ним с деньгами, причины могут быть совершенно разные.
Аналогично и у Red Hat, они сидят во главе кучи opensource продуктов, при этом развивая свои enterprise форки и продвигая свою поддержку. Крутая модель бизнеса, снимаю шляпу.
источник

DZ

Daniil Zobov in Laravel Pro
Кому нравится из разношерстных кубиков строить платформу - делает бесплатно. Кому надо сразу ехать - платит бабки и скипает исследовательский этап
источник
2021 June 14

ST

Sergey TS in Laravel Pro
Ребят как внутри метода в модели получить значение переменной? Метод будет вызываться через

Модель::with('мой метод')
источник

y

yu2ry in Laravel Pro
Функцию пробрось
источник

O

Olga in Laravel Pro
ребят кто где бесплатные сертификаты берет
источник

O

Olga in Laravel Pro
для wildcard
источник

O

Olga in Laravel Pro
помню год наз сервис бы
источник

O

Olga in Laravel Pro
но не помню названичя
источник

O

Olga in Laravel Pro
certbot
источник

d.

dev . in Laravel Pro
летскрипт
источник

O

Olga in Laravel Pro
cerbot там удобнее там летскрипт настроееный
источник

ST

Sergey TS in Laravel Pro
Я вот так пытаюсь не выходит
источник

ST

Sergey TS in Laravel Pro
На выходе пусто
источник

SS

Serg Serdyuk in Laravel Pro
Что то ты не то делаешь... Если юзать в with - метод должен возвращать отношение
источник

AV

Alan Vb in Laravel Pro
А в том месте где ты вызываешь метод, user_specialization() у тебя свойство qualification_code присутствует ? Выглядит так как будто ты сделал селект в котором эта колонка не включена
источник

А

Антон in Laravel Pro
Уговорил, вводный урок будет бесплатным. Возвращаясь к уже достаточно надоевшей теме "что в плохого в фасадах", начну с того, что покажу, как они работают (вдруг кто не знает и всем надо быть на одной волне, а то судя по последним событиям, знают об устройстве фасадов единицы, а особые уникумы вообще думают, что функциональные тесты ходят по http). Фасад – это сервис-локатор, разрешенный по имени конкретного сервиса, то есть буквально фасад – это короткая запись от app(Service::class), resolve(Service::class), Container::getInstance()->get(Service::class). Надеюсь, не надо объяснять, почему это плохо. У базового фасада есть доступ к контейнеру, дается он фасаду тут https://github.com/laravel/framework/blob/8.x/src/Illuminate/Foundation/Bootstrap/RegisterFacades.php#L22. У дочерних фасадов должно быть тут https://github.com/laravel/framework/blob/8.x/src/Illuminate/Support/Facades/Facade.php#L176 указано имя сервиса, по которому его можно найти в контейнере: это или service_name или Service::class или SomeInterface::class. Главное, чтобы фасад смог этот сервис разрезволить. Дальше никакой магии, обычное прокси: https://github.com/laravel/framework/blob/8.x/src/Illuminate/Support/Facades/Facade.php#L253-L261. Первая проблема – это сервис-локатор. Вторая проблема – вместо одного сервиса, ты делаешь два – сервис и фасад. Третья проблема – автокомплит. Забавно видеть, как ребята целые PR заводят ради phpdoc: https://github.com/laravel/framework/pull/35911/files, https://github.com/laravel/framework/pull/35201/files, https://github.com/laravel/framework/pull/34352/files. А потом хотят все их разом снести: https://github.com/laravel/framework/pull/36585/files. Прям топовая разработка, важные фичи, их обязательно надо отразить в release notes. Следующая проблема – неявные зависимости. Вызвав такой сервис https://pastebin.com/HdzQ3sbR, сложно сказать, какие у него зависимости. Мало того, что просто зависимости неявные, так у фасадов есть еще хуки https://github.com/laravel/framework/blob/8.x/src/Illuminate/Support/Facades/Facade.php#L32, на которые можно подписаться из провайдера, что делает поведение фасадов совершенно непредсказуемым. Отсюда также возникает сложность с тестированием, потому что коллега мог не позаботиться о том, чтобы настроить фасады так, чтобы в тестах использовались какие-нибудь ин-мемори хранилища, моки http клиентов и тому подобное (пример из реального опыта, когда запустив однажды в легаси-проекте тесты с хоста, а не из докера, мы обнаружили, что тесты ходили по http и использовали реальный брокер в виде кролика, что скрыло много багов). Да, у фасадов есть свапы https://github.com/laravel/framework/blob/8.x/src/Illuminate/Support/Facades/Facade.php#L150, моки https://github.com/laravel/framework/blob/8.x/src/Illuminate/Support/Facades/Facade.php#L112 и прочие инструменты для упрощения тестирования, которые почему-то становятся частью твоей бизнес-логики. Таким образом, если опираться на такой код https://pastebin.com/7gBWmCDT, видно, что я всегда знаю и контролирую зависимости, которые передаю, всегда могу их легко замокать в тестах и подменить в реальном коде, если потребуется очень специфическая зависимость в конкретном месте, потому что управляю кодом напрямую, а не сбоку через контейнер. И напоследок вспомним замечательное: https://github.com/laravel/ideas/issues/1088. Фасады любые сервисы делают синглтонами, даже если в провайдере ты юзал bind, а не singleton, потому что инстансы кэшируются https://github.com/laravel/framework/blob/8.x/src/Illuminate/Support/Facades/Facade.php#L198. Следующий урок горе-ларавельщикам будет 1000 рублей за объяснение.
источник

DZ

Daniil Zobov in Laravel Pro
Ну вот нормально же начал, а в конце снова начал вести полемику вокруг косаря)
выглядит не очень со стороны
источник

А

Антон in Laravel Pro
Это горчица к пасте. Не нужны мне ваши косари.
источник

DZ

Daniil Zobov in Laravel Pro
зачем тогда в каждом сообщении говорить про это, цель какая? показать свое ЧСВ? молодец, показал. Дальше что?)
источник

А

Антон in Laravel Pro
А дальше ты должен парировать по теме спора или признаться, что был неправ, а не уводить разговор в сторону моего чсв.
источник