Size: a a a

Laravel для начинающих

2020 February 18

VT

Vladimir Tsakhilov in Laravel для начинающих
а как быть с апдейт?
источник

AH

Andrey Helldar in Laravel для начинающих
Dmitry M
Rule это не контракт а именно интерфейс, контракт даёт право на что-либо (добавляет тип, он может быть вообще без сигнатур), а интерефейс на то и интерфейс, что-бы описать интерфейс, лол. Я к тому что директория Contracts явно не сюда, либо Interfaces, либо вообще без директории, добавить постфикс Interface
Чувак, контракт не даёт права, а определяет кто что должен делать. Контракт начинается со слова interfelace, так что не надо тут ля-ля.
А вот юзать постфикс Interface... Либо используй Contract, либо вообще не юзай - App\Contracts\Rule.
источник

AH

Andrey Helldar in Laravel для начинающих
Vladimir Tsakhilov
а как быть с апдейт?
Создание и обновление записей - разная логика.
В одном месте массово создаёшь, а обновлять 146% надо по-штучно и точно в другом месте.
источник

VT

Vladimir Tsakhilov in Laravel для начинающих
Andrey Helldar
Создание и обновление записей - разная логика.
В одном месте массово создаёшь, а обновлять 146% надо по-штучно и точно в другом месте.
обнови поштучно 1000+ рекордов...
источник

DM

Dmitry M in Laravel для начинающих
Andrey Helldar
Чувак, контракт не даёт права, а определяет кто что должен делать. Контракт начинается со слова interfelace, так что не надо тут ля-ля.
А вот юзать постфикс Interface... Либо используй Contract, либо вообще не юзай - App\Contracts\Rule.
ясненько
источник

AH

Andrey Helldar in Laravel для начинающих
Vladimir Tsakhilov
обнови поштучно 1000+ рекордов...
Опять же, если есть обсерверы или эвенты, то поштучно, а если массово, то никто не запрещает через релейшен обращаться без фильтрации по уникальному идентификатору.
Вот только что это за логика такая, в которой нужно свыше 1к дочерних записей обновлять из родительской...

Ещё непонятно что делает пакет. Может, он под капотом тот же форыч запускает, в чем я очень уверен. Но, в таком случае, зачем пакет?.. Непонятно.
источник

DM

Dmitry M in Laravel для начинающих
interface Saleable {} - пустой интерфейс, является контрактом, говорит о том что экземпляр класса реализующего контракт может быть продан, контракт может не иметь интерфейса вообще, от него важен тип

Интерфейс описывает API (сигнатуру) реализующего класса

interface Rule {
 public function validate(): bool;
 public function getError(): string;
}

а вообще это всё игра слов, по сути и то и то интерфейс. Но Rule у меня не контракт это уж точно, от интерфейса Rule мне важно быть уверенным в сигнатуре
источник

DM

Dmitry M in Laravel для начинающих
источник

DM

Dmitry M in Laravel для начинающих
по итогу пришёл к этому, может и не очень, но понятнее всего для меня
источник

AH

Andrey Helldar in Laravel для начинающих
Dmitry M
interface Saleable {} - пустой интерфейс, является контрактом, говорит о том что экземпляр класса реализующего контракт может быть продан, контракт может не иметь интерфейса вообще, от него важен тип

Интерфейс описывает API (сигнатуру) реализующего класса

interface Rule {
 public function validate(): bool;
 public function getError(): string;
}

а вообще это всё игра слов, по сути и то и то интерфейс. Но Rule у меня не контракт это уж точно, от интерфейса Rule мне важно быть уверенным в сигнатуре
Пустой?..
Некогда объяснять: собирайся и иди к кузнецам. По дороге нагугли схему гильотины. Как закончат, клади руки и руби нахер.

Он-рашн, у тебя класс ради класса. Если интерфейс не объявляет реализацию, то толку от него нет никакого ибо сейчас это мусор в коде.
источник

ИЛ

Иван Лещенко in Laravel для начинающих
Andrey Helldar
Пустой?..
Некогда объяснять: собирайся и иди к кузнецам. По дороге нагугли схему гильотины. Как закончат, клади руки и руби нахер.

Он-рашн, у тебя класс ради класса. Если интерфейс не объявляет реализацию, то толку от него нет никакого ибо сейчас это мусор в коде.
ShouldQueue...
источник

AH

Andrey Helldar in Laravel для начинающих
@Adelf32 как раз вчера писал, что контракты нужно держать в той же папке. На твоем скрине. Но лично я против такого размещения, так как они получаются разбросаны по приложению. Куда логичнее хранить их в одном месте, например, App\Contracts.

ShouldQueue, окей, согласен это имеет место быть, так как твой контракт расширяет его и он может быть пустым при семантически понятном виде (namespace имею ввиду). В этом случае не ходи к кузнецам))
источник

DM

Dmitry M in Laravel для начинающих
Нубский вопрос, но: объект валидатора (мой, не лары) возвращает в случае непрохождения некоторых проверок массив ошибок. Если валидация не прошло, то я бросаю исключение в котором есть метод report (т.к. мне нужно логировать ошибки которые вернул валидатор). Как мне в моё кастомное исключение передать массив ошибок? ничего если 1 аргументом конструктора (как message)? Это норм?
источник

DM

Dmitry M in Laravel для начинающих
if (!$this->validator->validate($order)) {
   throw new AutoCheckoutException($this->validator->getErrors());
}
источник

DM

Dmitry M in Laravel для начинающих
или лучше сразу собрать из массива строку?
источник

AP

Alexander Pavlenko 🌚 in Laravel для начинающих
🌚
источник

AP

Alexander Pavlenko 🌚 in Laravel для начинающих
а какая цель?
источник

AH

Andrey Helldar in Laravel для начинающих
Dmitry M
if (!$this->validator->validate($order)) {
   throw new AutoCheckoutException($this->validator->getErrors());
}
В свой эксепшен ты может и засунешь массив, но при дальнейшем прохождении должна быть одна строка
источник

AP

Alexander Pavlenko 🌚 in Laravel для начинающих
сделай так, как сделано в ексепшене лары
источник

DM

Dmitry M in Laravel для начинающих
В каком именно?)
источник