Задать вопрос
  • Где посмотреть\почитать нормальные уроки по ООП в PHP?

    @Flying
    Антон Р., Laravel - конечно тоже вполне приемлемая и, для новичка, возможно более простая альтернатива. Лично мне он не сильно нравится именно из-за компромиссов на которые разработчики сознательно идут ради упрощения "стандартных" сценариев использования и снижения порога входа, но вам, возможно, будет более интересен.

    Мы как раз недавно вот здесь обсуждали схожий вопрос, возможно вам будет интересно.
  • Где посмотреть\почитать нормальные уроки по ООП в PHP?

    @Flying
    Максим, При всём уважении к вашему вкладу в тег Yii - думаю что как раз Yii можно и пропустить, учить 2-ю версию в 2019-м как-то странно с учётом того что 3-я версия не будет совместима со второй, а вторая по сути не развивается (Symfony для сравнения). Вкладывать время в изучение framework'а у которого нет развития - не лучший вариант для новичка.

    Антон Р. Посмотрите в сторону Symfony, как раз вторая ссылка из приведённых Максимом
  • Как правильно реализовать теги в Symfony?

    @Flying
    alexg-nn Можно поступить чуть сложнее, но зато безопасно, я так делал пару раз в своих проектах:
    1. Реализуем обработчики preUpdate и preRemove, но вместо внесения изменений непосредственно просто складываем их где-то в классе-обработчике
    2. Реализуем обработчик postFlush, в нём вносим изменения (удаляем статьи и теги которые надо удалить)

    Встаёт вопрос о том как вызвать EntityManager::flush() в этом случае. Я в своих проектах в обработчике postFlush, в случае если были какие-то изменения, ставил флаг $flushRequired. Сам класс обработчика подписывал на событие kernel.terminate и в этом обработчике ставил:
    if ($this->flushRequired) { 
        $this->em->flush(); 
    }
  • Как указать доктрине, какой неймспейс использовать?

    @Flying
    HellWalk видимо я неудачно выразился... что такое этот namespace? Что-то специфичное для PostgreSQL судя по тегам вопроса?
  • Как указать доктрине, какой неймспейс использовать?

    @Flying
    HellWalk А где в приведённых вами примерах кода определён этот namespace public?
  • Что почитать про правильное проектирование своих приложений?

    @Flying
    Олег Максимов на самом деле Ярослав очень точно заметил что на Symfony зачастую нужно писать весьма мало кода для реализации хорошего решения.

    Особенно это заметно начиная с 4-й версии когда в дополнение к действительно грандизоному по своему удобству autowiring'у добавился Symfony Flex, почти полностью устранив необходимость в ручной конфигурации устанавливаемых пакетов.

    Если вы используете PHPStorm (если нет - то крайне рекомендую), то для него есть просто шикарный плагин для интеграции с Symfony, а также прекраснейшее дополнение к встроенным inspections - PHP Inspections. Используя эту связку вы довольно скоро начинаете замечать что код пишется чуть ли не сам т.к. вам по большей части необходимо задумываться только о логике вашего приложения, всё остальное за вас делают инструменты.

    Поверьте после этого написание кода в других связках framework + soft можно расценивать как пытку... Приходится поддерживать проект на ZF2 и иметь дело с Wordpress, так что есть с чем сравнить :)
  • Что почитать про правильное проектирование своих приложений?

    @Flying
    Если говорить о второй версии (третья ещё не вышла), то в Yii есть масса весьма сомнительных решений с точки зрения архитектуры:

    Это и ActiveRecord, который в целом многими считается антипаттерном из-за того что в одном объекте смешиваются и сами данные и бизнес-логика и логика взаимодействия с базой и т.п.

    Это и глобальное хранилище сервисов Yii::$app (такой же есть и в Laravel, кстати), откуда все подряд классы пытаются дёргать информацию вместо использования честного IoC (inverse of control, часть принципов SOLID).

    Это "толстые" контроллеры и "тонкие" модели (последнее, в частности, является следствием использование ActiveRecord).

    Это отсутствие шаблонизатора и использование PHP для рендера views что с одной стороны открывает существенное пространство для проблем с безопасностью, а с другой (в том числе за счёт глобального Yii::$app) - открывает недисциплинированным программистам возможности делать во views то что там делать нельзя (никогда не видели запросов к базе из views?)

    Ну и так далее...

    Я с ним мало работал, так что часть информации - из внешних источников, но в целом Yii - он про скорость разработки, а не про построение decoupled архитектуры.

    Yii может быть вполне неплохим выбором как фреймворк для относительно быстрой разработки, когда скорость получения результата важнее его качества. Для быстрого старта, построения MVP и не особо сложных / долгоживущих проектов он вполне может быть более подходящим чем, к примеру, тот же Symfony, но ведь в вопросе речь идёт именно об изучении хороших подходов к архитектуре, а здесь Yii - не лучший вариант.
  • Кто знает хорошое пособие по Doctrine на русском?

    @Flying
    Если что - это не попытка поиздеваться, а признание факта того что документация для подавляющего большинства проектов пишется и поддерживается в актуальном состоянии только на английском языке. Gоэтому, если вы ещё не овладели английским в достаточной степени для чтения документации "как есть" то лучше использовать Google Translate и, конечно, подтягивать английский.

    Русская (или какая-либо другая) документация, даже если она есть, совершенно необязательно полна, актуальна и корректна, поэтому стоит приучать себя читать документацию (а также писать документацию, комментарии и т.п.) именно на английском языке - хотя бы ради практики.
  • Как скачать 12 миллионов фотографий Instagram?

    @Flying
    dmitred нет, насколько я могу заметить - там сейчас просто значение csrf_token, без каких-либо дополнений и преобразований.
  • Как скачать 12 миллионов фотографий Instagram?

    @Flying
    dmitred похоже что недавно переделали... :) Да, теперь это config.csrf_token и имя у заголовка изменилось: X-CSRFToken

    Ну так даже проще
  • Как найти файл на кириллице Symfony Finder?

    @Flying
    Да, спасибо РКН, через VPN нормально открывается
  • Как найти файл на кириллице Symfony Finder?

    @Flying
    Похоже что вот похожий bugreport в трекере Symfony, там говорят что это проблема самого PHP и исправлена в 7.1 (очевидно имея в виду вот это).

    Очевидно проблема глубже и лежит в разнице интерпретаций кодировок. Я бы на вашем месте покопал глубже и вне контекста Symfony, просто на чистых PHP функциях.
  • Как найти файл на кириллице Symfony Finder?

    @Flying
    А сам PHP файл у вас в какой кодировке?
  • Как скачать 12 миллионов фотографий Instagram?

    @Flying
    dmitred подписи запросов необходимы только в том случае если вы обращаетесь к Instagram через GraphQL запросы т.е. это XHR запрос на /graphql/query/.

    В этом случае Instagram ждёт заголовок X-Instagram-GIS с форматом значения, который я описал выше. Значение передаваемое в md5() имеет формат gis:vars где:
    • gis - это токен, он берётся из переменной window._sharedData по ключу rhx_gis, имеет вид md5 хэша
    • vars - это содержимое параметра запроса variables в формате json
  • Что делать, если в SASS файле не работает Emmet?

    @Flying
    И, замечу, что "ttu -> Text transform uppercase" это не Emmet, а просто автокомплит
  • Как скачать 12 миллионов фотографий Instagram?

    @Flying
    Да, реализовывал, фактически писал ответ пробегаясь по коду проекта, одной из функций которого является как раз эта задача. Но проект не публичный и код принадлежит не мне, так что раскрывать код не буду, но все основные моменты я описал. У меня (в силу более широкой задачи) используется Puppeteer, но в контексте именно вашей задачи это будет явный overkill по ресурсам, так что проще через любую http библиотеку (в зависимости от языка который вы используете).
  • Сделать полиморфную связь для комментариев?

    @Flying
    Кстати, наткнулся на весьма и весьма похожую тему в документации, похоже как раз ваш случай.
  • Composer doctrine error?

    @Flying
    Тогда, с учётом того где именно происходит ошибка и того что этот пакет не имеет прямой связи с экосистемой Symfony - я бы в первую очередь посмотрел на то как он конфигурируется в контейнере. В 4-й версии для этого есть команда debug:container, не помню есть ли она в 3-ей. Но лично я предпочитаю просто искать соответствующий метод в откомпилированном контейнере и смотреть что происходит по факту.