Как стать автором
Обновить
8.85

Laravel *

Бесплатный веб-фреймворк с открытым кодом

Сначала показывать
Порог рейтинга
Уровень сложности

Полезные репозитории с Eloquent?

Время на прочтение7 мин
Количество просмотров19K

На прошлой неделе я написал статью о бесполезности шаблона Репозиторий для Eloquent сущностей, однако пообещал рассказать как можно частично его использовать с пользой. Для этого попробую проанализировать как обычно используют этот шаблон в проектах. Минимально необходимый набор методов для репозитория:


<?php
interface PostRepository
{
    public function getById($id): Post;
    public function save(Post $post);
    public function delete($id);
}

Однако, в реальных проектах, если репозитории таки было решено использовать, в них часто добавляются методы для выборок записей:


<?php
interface PostRepository
{
    public function getById($id): Post;
    public function save(Post $post);
    public function delete($id);

    public function getLastPosts();
    public function getTopPosts();
    public function getUserPosts($userId);
}
Читать дальше →
Всего голосов 25: ↑22 и ↓3+19
Комментарии28

PHP-Дайджест № 152 (11 – 25 марта 2019)

Время на прочтение5 мин
Количество просмотров14K

Свежая подборка со ссылками на новости и материалы. В выпуске: свежие RFC предложения и другие новости из PHP Internals, порция полезных инструментов, и много других материалов и новостей!

Приятного чтения!

Читать дальше →
Всего голосов 65: ↑63 и ↓2+61
Комментарии38

Пожалуйста, прекращайте говорить про шаблон Репозиторий с Eloquent

Время на прочтение5 мин
Количество просмотров22K

Я регулярно вижу статьи в стиле "как использовать шаблон Репозиторий с Eloquent" (одна такая попала в недавний PHP-дайджест). Обычное содержание их: давайте создадим интерфейс PostRepositoryInterface, EloquentPostRepository класс, красиво их забиндим в контейнере зависимостей и будем использовать вместо стандартных элоквентовских методов save и find.


Зачем этот шаблон нужен иногда вовсе не пишут ("Это же шаблон! Разве не достаточно?"), иногда что-то пишут про возможную смену базы данных (очень частое явление в каждом проекте), а также про тестирование и моки-стабы. Пользу от введения такого шаблона в обычный Laravel проект в таких статьях сложно уловить.


Попробуем разобраться, что к чему? Шаблон Репозиторий позволяет абстрагироваться от конкретной системы хранения (которая у нас обычно представляет собой базу данных), предоставляя абстрактное понятие коллекции сущностей.

Читать дальше →
Всего голосов 30: ↑25 и ↓5+20
Комментарии33

PHP-Дайджест № 151 (25 февраля – 11 марта 2019)

Время на прочтение4 мин
Количество просмотров15K

Свежая подборка со ссылками на новости и материалы. В выпуске: обновления PHP, Laravel 5.8, Xdebug 2.7 и другие релизы, 3 свежих RFC, 2 принятых, и концепт из PHP Internals, порция полезных инструментов, и многое другое.

Приятного чтения!


Читать дальше →
Всего голосов 60: ↑60 и ↓0+60
Комментарии9

Истории

PHP: изменение стуктуры БД в командной разработке

Время на прочтение6 мин
Количество просмотров8.7K


В мире PHP хорошо известны инструменты миграций структуры БД — Doctrine, Phinx от CakePHP, от Laravel, от Yii — это то первое, что пришло в голову. Наверняка, есть еще с десяток. И большинство из них работают с миграциями — командами для внесения инкрементных изменений в схему базы данных.

Я не буду описывать зачем это, на хабре много постов на эту тему. Например:


Далее, развитие моего опыта работы в команде с постоянным изменением структуры БД в разных ветках.
Читать дальше →
Всего голосов 19: ↑15 и ↓4+11
Комментарии23

REST API на Laravel в 100 строк кода

Время на прочтение5 мин
Количество просмотров108K

inb4: копипаста из документации


В гайде упор на быстрое развертывание минимального набора для полноценной разработки API в соответствии с best practice, взятыми из документации Laravel 5.7, собранными в одном месте. Писал для себя и коллег как шпаргалку, надеюсь пригодится кому-нибудь еще.

Читать дальше →
Всего голосов 31: ↑17 и ↓14+3
Комментарии12

PHP-Дайджест № 150 (11 – 25 февраля 2019)

Время на прочтение3 мин
Количество просмотров15K

Свежая подборка со ссылками на новости и материалы. В выпуске: изменены правила голосования за RFC в PHP Internals, стартовал прием заявок на доклады для PHP Russia 2019, новое расширение для реализации параллельного исполнения кода, свежие материалы для обучения, видео, порция полезных инструментов, и многое другое.

Приятного чтения!


Читать дальше →
Всего голосов 45: ↑42 и ↓3+39
Комментарии10

PHP-Дайджест № 149 (28 января – 11 февраля 2019)

Время на прочтение4 мин
Количество просмотров15K

Свежая подборка со ссылками на новости и материалы. В выпуске: PHPUnit 8 и другие релизы, PSR-14 и PSR-12 в стадии ревью, JIT для PHP, стартовала работа над PHP 8, пачка свежих RFC из PHP Internals, порция полезных инструментов, и многое другое.

Приятного чтения!


Читать дальше →
Всего голосов 61: ↑60 и ↓1+59
Комментарии19

Laravel + Docker: наш успешный опыт использования

Время на прочтение8 мин
Количество просмотров42K
image

О чем эта статья


В статье пойдет речь о нашем опыте использования Docker для быстрой настройки масштабируемого dev окружения для web разработки. Я коротко расскажу о задачах, которые стояли перед нами и об инструментах, которые были выбраны для решения этих задач. Статья отмечена значком tutorial, потому что вы найдете в ней инструкцию по разворачиваю окружения у себя. По сравнению с аналогичными статьями (ссылки в конце статьи), здесь будет меньше технических деталей и больше живых примеров.
Читать дальше →
Всего голосов 19: ↑10 и ↓9+1
Комментарии8

Паттерн Интерактор (Interactor, Operation)

Время на прочтение9 мин
Количество просмотров27K

Данный текст представляет собой адаптацию части руководства фрэймворка Hanami под фрэймфорк Laravel. Чем вызван интерес именно к этому материалу? В нём даётся пошаговое описание с демонстрацией таких общих для языков программирования и фрэймворков вещей как:


  • Использование паттерна "Интеракторы".
  • Демонстрация TDD\BDD.

Сразу стоит отметить, что это не только разные фрэймворки с разной идеологией (в частности, что касается ORM), но и разные языки программирования, каждый из которых имеет свою специфическую культуру и сложившиеся "bests practics" в силу исторических причин. Разные языки программирования и фрэймворки тяготеют к заимствованию друг у друга наиболее удачных решений, поэтому несмотря на различия в деталях, фундаментальные вещи не различаются, если мы конечно не берём ЯП с изначально разной парадигмой. Достаточно интересно сравнить, как одну и туже задачу решают в разных экосистемах.


Итак, исходно мы имеем фрэймворк Hanami (ruby) — достаточно новый фрэймворк, идеологически больше тяготеющий к Symfony, с ORM "на репозиториях". И целевой фрэймворк Laravel\Lumen (php) с Active Record.

Читать дальше →
Всего голосов 20: ↑17 и ↓3+14
Комментарии14

Gitpab. Приятно познакомиться

Время на прочтение7 мин
Количество просмотров6.6K
Здравствуй. Я Gitpab. Рад знакомству. Меня сделали для того, чтобы легче было надзирать за программистами. Я беру часы, которые разработчики отметили в Gitlab, и подсчитываю, кто сколько затратил времени на работы по задачам. И по проекту в целом. Поговаривают, что большие начальники с моей помощью считают зарплату прогеров и рентабельность проектов. И это действительно так. Еще с моей помощью можно повысить маржинальность софтверных проектов. А сейчас я расскажу, чем могу быть полезен твоей команде и тебе лично.

image
Читать дальше →
Всего голосов 33: ↑17 и ↓16+1
Комментарии24

PHP-Дайджест № 148 (14 – 28 января 2019)

Время на прочтение4 мин
Количество просмотров15K

Свежая подборка со ссылками на новости и материалы. В выпуске: взломан репозиторий PEAR, о будущем Xdebug, конференция PHP Russia 2019, свежие релизы, RFC предложения из PHP Internals, порция полезных инструментов, и многое другое.

Приятного чтения!


Читать дальше →
Всего голосов 70: ↑69 и ↓1+68
Комментарии26

Работа начинается с тестирования

Время на прочтение4 мин
Количество просмотров8.8K
В жизни каждого разработчика наступает момент, когда он задумывается над созданием тестовой составляющей для своего детища. Поправлюсь — в жизни каждого хорошего разработчика. Когда ты джуниор и не несешь особой ответственности, имеешь право на уйму ошибок и можешь их исправить в любой момент. Ты не отвечаешь за тот продукт, что создаешь и не имеешь мотивации тратить лишнюю минуту на перепроверку созданного кода. «Да ничего, этот косяк не воспроизведется», «кажется, эта штука работает», «ну как минимум, она делает то что нужно» — если вы желаете перерасти уровень программерских яслей, то придётся свести на нет каждую из этих мыслей.

С развитием собственного опыта программирования, у вас появляются новые всё более и более крутые/крупные клиенты. От некоторых вы даже будете в восторге (от всех, если вы прям везунчик) — и люди хорошие, и оплачивают щедро, и не придирчивы к возникающим проблемам. Давайте рассмотрим один такой простой случай (очень простой, но главное то, что за этим стоит) создания обработчика формы от программиста, не знающего хлопот.
Читать дальше →
Всего голосов 28: ↑22 и ↓6+16
Комментарии14

Ближайшие события

PHP-Дайджест № 147 (1 – 14 января 2019)

Время на прочтение3 мин
Количество просмотров15K

Свежая подборка со ссылками на новости и материалы. В выпуске: обновления всех веток PHP, Deployer 6.4, doctrine/migrations 2.0, Psalm 3 и другие релизы, Никита Попов в JetBrains, новости PHP Internals, порция полезных инструментов, видео, и многое другое.

Приятного чтения!

Читать дальше →
Всего голосов 48: ↑47 и ↓1+46
Комментарии8

За что я ненавижу Eloquent ORM

Время на прочтение4 мин
Количество просмотров31K

image


Всем привет. Хочу перед вами исповедаться и рассказать немного о том, что я чувствую, когда разрабатываю на Laravel. Нет, не подумайте, я обожаю этот фреймворк и безумно благодарен команде, которая его создала и поддерживает, они делают крайне крутое дело и, на мой взгляд, Laravel является лучшим продолжением не менее горячо любимого мною Symfony.


Я обожаю тупой код. Тупой в том смысле, что даже через 10 лет, если заказчик попросит тебя внести изменения в него, ты сможешь сделать это не вникая во всю логику, даже будучи после пятничного корпоратива, ничего в старом коде не сломав. И тупой в том смысле, что не нужно прикладывать никаких когнитивных усилий, чтобы его понять. Но есть в Laravel Eloquent ORM одно архитектурное решение, которое заставляет меня плакать. Интересно? Заходите под кат.

Читать дальше →
Всего голосов 37: ↑30 и ↓7+23
Комментарии113

PHP-Дайджест № 146 (10 – 24 декабря 2018) + Итоги 2018 года

Время на прочтение5 мин
Количество просмотров16K

По традиции подведем итоги уходящего года и вспомним самые значимые события в мире PHP. И конечно, ссылки на свежие новости, полезные инструменты и интересные материалы за последние две недели.


Под катом вас также ждет розыгрыш лицензий на PhpStorm от JetBrains.

Приятного чтения и с наступающим Новым годом!


Читать дальше →
Всего голосов 38: ↑38 и ↓0+38
Комментарии106

PHP-Дайджест № 145 (26 ноября – 10 декабря 2018)

Время на прочтение5 мин
Количество просмотров15K

Свежая подборка со ссылками на новости и материалы. В выпуске: PHP 7.3.0, Symfony 4.2, Composer 1.8.0 и другие релизы, конец поддержки PHP 5.6 и PHP 7.0, свежие предложения из PHP Internals, порция полезных инструментов, видеозаписи докладов и многое другое.
Приятного чтения!


Читать дальше →
Всего голосов 47: ↑46 и ↓1+45
Комментарии4

PHP-Дайджест № 144 (12 – 26 ноября 2018)

Время на прочтение5 мин
Количество просмотров15K

Свежая подборка со ссылками на новости и материалы. В выпуске: PHP 7.3.0RC6, PhpStorm 2018.3 и другие релизы, Symfony покидает PHP-FIG, свежие предложения и новости PHP Internals, порция полезных инструментов, видеозаписи с прошедших митапов и конференций и многое другое.
Приятного чтения!


Всего голосов 37: ↑37 и ↓0+37
Комментарии11

PHP-Дайджест № 143 (1 – 12 ноября 2018)

Время на прочтение3 мин
Количество просмотров14K

Свежая подборка со ссылками на новости и материалы. В выпуске: принят PSR-18, статистика версий PHP от Packagist, анонсы митапов и карта митапов, PHP 7.3.0RC5 и другие релизы, порция полезных инструментов, о будущем PHP-дайджеста, и многое другое.
Приятного чтения!


Читать дальше →
Всего голосов 51: ↑51 и ↓0+51
Комментарии8

Middleware и возможности Pipeline в Laravel

Время на прочтение7 мин
Количество просмотров23K


Laravel — это поистине большая и сложная система, которая старается решить большинство бытовых задач веб разработчика максимально элегантным способом и собрать в себе как можно больше инструментов и, что очень важно — с как можно более человеческим интерфейсом.

И сегодня речь пойдет об одном из таких инструментов, а точнее о его использовании и реализации со стороны программиста. Отсутствие полноценной документации, а также отсутствие русскоязычных статей и очень малое количество статей иностранных — подтолкнуло меня к решению раскрыть некую завесу тайны об этой интересной возможности фреймворка и выбору этой темы в качестве моей первой статьи на Хабре.
Читать дальше →
Всего голосов 30: ↑30 и ↓0+30
Комментарии9