• Использование событийной модели в Doctrine 2 + Symfony 3

      Давайте представим ситуацию: у вас есть заказ в интернет магазине (Entity). Заказ имеет некий статус. При смене статуса заказа необходимо провести кучу сопутствующих действий, например:


      • сохранить в заказе дату последнего изменения
      • записать в историю по заказу информацию о смене статуса
      • отослать письмо / sms клиенту
      • вызвать метод API службы доставки / платежной системы / партнера и т.д.

      Возникает вопрос как все это правильно организовать с точки зрения программного кода.
      Все ниже описанное справедливо для Doctrine 2 и Symfony > 3.1

      Читать дальше →
    • Sonata Import Bundle

        До сих пор одной из самых лучших админ панелей для Symfony является SonataAdminBundle, и не зря. Простая установка, конфигурация, множество фич “из коробки” и большое сообщество.

        Единственное, что в ней отсутствует, так это импорт файлов. Согласитесь, немаловажная функция.

        В сети лежит множество реализаций импорта для Sonata, но везде есть небольшие недочеты — возможность импорта только текстовых полей, а не сущностей, не работает с коллекциями, проблематично грузить огромные базы, которые могут обрабатываться не один час…

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

        image
        Читать дальше →
      • Symfony + RabbitMQ Быстрый старт для молодых

        • Tutorial
        Всем доброго времени суток, друзья.
        Сегодня захотелось поговорить о том, как можно работать с RabbitMQ в Symfony и совсем чуть-чуть о некоторых подводных комнях. В конце я напишу парочку интересных моментов о кролике (рус. перевод «rabbit») для тех, кто совсем в танке.

        Я не буду рассказывать про сам RabbitMQ, поэтому если вы пока и этого не знаете, почитайте следующие переводы:

        Статья 1
        Статья 2
        Статья 3
        Статья 4
        Статья 5

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

        + Все достаточно подробно описано, когда я читал это в свое время, достаточно было интерпретировать код мысленно, чтобы понять как что и зачем.

        Если вы уже знаете, что такое консумер и почему в нем нужно делать $em->clear() + gc_collect_cycles, а после закрывать соединение с базой данных, то, скорее всего, вы ничего нового для себя не узнаете. Статья скорее для тех, кто не хочет разбираться с AMQP протоколом, но которым нужно прямо сейчас применять очереди и выбор почему-то бездумно пал на RabbitMQ, а не тот же легковесный beanstalkd.
        Если же у вас микросервисная архитектура и вы ждете, что я расскажу вам как сварить коммуникацию между компонентами через AMQP, как красиво делать RPC, то я сам чего-то подобного очень давно жду на Хабре…
        Читать дальше →
      • DDD на практике. Проектирование списка желаний

        • Tutorial

        В интернете довольно много разрозненного материала по DDD. Если не считать синей книги, то в основном это короткие статьи с теорией, надёрганной из этой же книги, и которая мало пересекается с практикой. Возможно, конечно, что я просто плохо искал, но мне давно хотелось найти какой-нибудь цельный пример, что называется, «от и до». И я решил такой пример создать на Symfony 3 и VueJS. Сразу хочу сказать, что я изучаю DDD недавно, поэтому взял довольно простую предметную область — список желаний (wish list).

        Читать дальше →
      • Непрерывная интеграция/внедрение приложения Symfony с помощью docker-compose и GitLab CI

        • Tutorial

        В статье я поделюсь своим опытом автоматизации всего процесса разработки приложения Symfony с нуля от настройки инфраструктуры до деплоя в production. От development- и до production-окружения для запуска приложения будет использоваться docker-compose, а все процедуры непрерывной интеграции/внедрения будут запускаться через GitLab CI/CD Pipelines в docker-контейнерах.


        Подразумевается, что вы знакомы с docker и docker-compose. Если нет или вы не знаете как его установить, я подготовил инструкцию по подготовке локального окружения разработчика. Фактически, для работы над приложением потребуется только Docker, VirtualBox и, опционально, Yarn.

        Читать дальше →
      • Джентльменский набор Doctrine 2 для Symfony 3.3.6: Создание сущности, ассоциации и рекурсивные связи

        • Tutorial


        Доброго дня, читатель!

        Что мы будем делать с вами по ходу чтения статьи


        • Создадим простые сущности
        • Немного поговорим об ORM аннотациях
        • Реализуем ассоциации:
          1. Двунаправленные связи Один к Одному
          2. Двунаправленные связи Один ко Многим
          3. Двунаправленные связи Многие ко Многим
          4. Рекурсивные связи

        • Поиграемся этими сущностями с помощью фикстур

        Читать дальше →
      • Реклама помогает поддерживать и развивать наши сервисы

        Подробнее
        Реклама
      • Doctrine Specification Pattern или ваш реюзабельный QueryBuilder

        • Tutorial
        Я постараюсь максимально коротко рассказать о том, как можно использовать этот паттерн с нашей любимой Doctrine на примерах и почему так делать — true.

        Давайте представим себе базовый кейс:

        1. У нас есть: сущность «Дом», сущность «Квартира в доме», сущность «Застройщик», сущность «Регион».
        2. У нас есть задача: иметь возможность получить всех застройщиков, иметь возможность получить все занятые регионы застройщиком, уметь возможность получить все дома, которые принадлежат застройщику и все доступные регионы вообще в принципе, где ведутся продажи домов.
        3. У нас есть правила от бизнеса:
        Читать дальше →
      • Поговорим о Yii 2

          Yii, вероятно, самый популярный PHP фреймворк на просторах СНГ.
          Многие годы он был замечательным инструментом и помогал нам зарабатывать на хлеб с маслом.
          Но стоит ли начинать на нем новые проекты в 2017-м? Я задумался.

          Читать дальше →
        • Superjob PHP-meetup

            Superjob приглашает на PHP-meetup. Встречаемся 20 июля в нашем офисе на Малой Дмитровке.

            Это мероприятие мы посвятим разработке на PHP, увеличению производительности и разработке API.

            image

            Спикеры:

            Антон Довгаль, Senior C Developer Badoo, с докладом «Как мы разрабатываем модули в Badoo»

            Документация на тему архитектуры языка PHP скудна и разрозненна, несмотря на то что тема интересна многим. В моем докладе я постараюсь заполнить этот пробел и рассказать о модулях PHP: как они работают, зачем и как их пишут. В процессе мы рассмотрим опыт Badoo в этой сфере на примерах двух модулей. И еще напишем очень небольшой собственный модуль.
            Читать дальше →
            • +11
            • 3,5k
            • 9
          Самое читаемое