Giter Site home page Giter Site logo

acwa_book_ru's People

Contributors

4unkur avatar adelf avatar adiafora avatar asiries335 avatar dreanei23 avatar gittush avatar gomzyakov avatar gs-design avatar igor-tv avatar ilyavorozhbit avatar jdeeline avatar jhaoda avatar kafkiansky avatar lptn avatar nex-otaku avatar pavelpage avatar pchelk1n avatar pluk avatar superrosko avatar tipsypenguin avatar tsparksh avatar varrah avatar wispoz avatar yesnik avatar zhetenov avatar zlodes avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

acwa_book_ru's Issues

Зачем избыточный метод авторизации в FormRequest`ах?

В главе "Слой приложения", раздел "Передача данных запроса" есть такое предложение:

В моих проектах всегда есть базовый FormRequest класс, в котором метод authorize с одним оператором return true;, который позволяет забыть про авторизацию на этом уровне.

А зачем? В классе Illuminate\Foundation\Http\FormRequest проверяется существование метода authorize, и в случае его отсутствия считается, что авторизация пройдена (там тот же оператор return true). Можно просто не включать этот метод в свои классы.

Кастомные ошибки для ModelNotFoundException

В главе про обработку ошибок я так и не понял одну вещь. Допустим ситуация такая: я ищу запись в бд, и не нахожу ее. В зависимости от вида модели я хочу отправить клиенту сообщение об ошибке.
В контроллере у меня так
$promocode = Promocode::where('code', $request->promocode)->firstOrFail();

в случае если это аякс запрос, я хочу вернуть ответ в универсальном для меня формате. Для этого в handler.php в методе render я пишу следующее
image

Проблема тут в том, что я не могу из контроллера передать нужное мне сообщение об ошибке. Что тут можно сделать?

Структура проекта

Книга замечательная. Спасибо огромное !
После прочтения у меня остался вопрос. Как правильно создать структуру. В какую директорию сохранять Domain слой. Куда сохранить DTO(В одну директорию все или на поддиректории), и прочее. Очень хотелось бы увидеть пособие/пример. Если бы к книге был хоть манюсенький пример проекта(ссылка на github или даже платный вариант. Было бы здорово.). Пример в таком ввиде:
-DomainLayer
-DTO
--User
--Setting

Логика предложения уехала

"Если несколько разных типов сущностей, которые хранятся в одной таблице, еще можно представить и для Active Record библиотек, правда я ни на одном проекте такого не видел, то полноценную поддержку объектов-значений я не ещё не встречал"

Логика предложения уехала "не видели и не встречал" ожидается противопоставление "это не видел а это встречал"

Выборка по двум полям

Пишу простую аналитику для данных их crm системы. У меня есть 2 сущности: сделка Lead, и менеджер Responsible, который с этой сделкой работает. Для аналитики мне нужно сделать несколько выборок. Одна из них это получение по менеджеру сделок в статусе Оплачено, и в статусе Ожидает оплату
image

При этом приходится дублировать код в модели Responsible
image
Приходится это делать из-за того, что в eager load нельзя использовать алиасы
image
Вот так к сожалению не работает. Как не дублировать код я так и не нашел способа, может вы что-то подскажете?

И вторая проблема с елоквентом. Структура таблицы leads такая, что связка с ответственным менеджером может быть как по полю responsible_id, так и по полю extra_responsible. Запрос на выборку сделок выглядит так:
image
Как такой запрос сделать в елоквенте, я не представляю. Да, можно было бы решить через отношение многие-ко многим, но сейчас структуру базы данных я менять не готов. Есть ли какой-то другой выход?

Про именование интерфейсов

Здравствуйте, Адель!
Привожу цитату из книги:

Второй вариант: использование суффикса *Interface, например, создать интерфейс StorageInterface. Таким образом, имея класс Storage реализующий интерфейс StorageInterface, мы постулируем, что у нас есть интерфейс и его «главная» реализация. Все остальные реализации этого интерфейса выглядят вторичными. Само существование интерфейса StorageInterface выглядит искусственным: он был создан, чтобы код удовлетворял каким-то принципам, или просто для юнит-тестирования.

Это явление встречается и в других языках. В C# принят префикс I*. Интерфейс IList и класс List, например. В Java не приняты префиксы и суффиксы, но там часто случается такое:

class StorageImpl implements Storage

https://github.com/adelf/acwa_book_ru/blame/master/manuscript/2-di.md#L362

Вероятно здесь речь именно про то, что имя класса Storage плохое только если он реализует интерфейс с названием StorageInterface, т.к.

мы постулируем, что у нас есть интерфейс и его «главная» реализация

а не про то, что суффикс Interface нельзя или не стоит использовать для именования интерфейсов?
PSR обязывает использовать венгерскую нотацию для именования интерфейсов.

"Простая идея генерировать нормальное бизнес-событие PollCreated после успешной транзакции намного лучше." может привести к потере событий

Простая ситуация, транзакция успешно завершилась, а сервер очередей оказался недоступен - иног событие потеряно. Промежуточное сохранение в БД внутри основной транзакции позволит реализовать механизм повторной отправки события на обработку в случае такого отказа, что исключит потерю событий.

Почему считается, что модели eloquent имеют минимум две ответсвенности?

В главе "Внедрение зависимостей" встретил следующую фразу:

Классы Eloquent моделей содержат как минимум две ответственности: хранение состояния сущности и выборку/сохранение/удаление сущностей из базы

В связи с этим, у меня возникли следующие вопросы:

  1. Взаимодействие с базой это не часть ответственности по хранению данных? Я думаю хранение данных должно предусматривать взаимодействие с каким-либо персистентным хранилищем, иначе это не хранение.
  2. Почему тогда, например, обязанности класса Request не определить как:
  • хранение данных HTTP запроса
  • парсинг HTTP запроса

Я считаю, что иметь состояние для класса в ООП это не обязанность. Все объекты в ООП (даже т.н. stateless сервисы) имеют состояние, взять хотя бы внутренний идентификатор, зависимости, конфигурацию. Почему наличие атрибутов с данными в моделях Eloquent считаются отдельной ответственностью?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.