• Какое проектирование БД более верное?

    Decadal
    @Decadal
    2a3494d97e3b34e05ebf5111ccb99102.png

    Discounts нужно связать двумя "многие-ко-многим", это делается при помощи двух вспомогательных таблиц. Таким образом, у вас один Discount может
    1) не иметь связи ни с товаром ни с категорией
    2) быть связанным с множеством товаров
    3) быть связанным с множеством категорий
    4) быть связанным как с несколькими товарами, так и с несколькими категориями
    Ответ написан
    7 комментариев
  • Как вытащить текст из переменной в php?

    @esvlad
    Веб-разработчик
    Рекомендую Simple HTML DOM и не нужно париться с регулярками.
    Ответ написан
    Комментировать
  • Когда лучше macro а когда кастомная twig функция?

    riky
    @riky
    Laravel
    кастомная функция позволит обращаться к другим сервисам в системе, получать данные, что-то проверять.
    для макро и инклюд все данные должны быть уже готовы.
    макро удобней инклюдов для мелких вещей, типа инпутов тем что их можно кучу поместить в один файл и синтаксис более простой.

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

    UPD подведу итог, я бы рекомендовал
    1) использовать кастомные твиг функции, когда требуется какая то сложная логика или запрос данных из системы, но не рекомендовал бы ее для генерации html, просто потому что html в пхп не гуд. но в кастомной функции вы можете вызвать render другого шаблона, это норм, просто может ухудшить поиск верстки для фронтендеров (в случае инклюда для них все очевидно).
    2) макросы - для кучки небольших вещей которые используются часто и повсеместно (инпуты)
    3) инклюды для остальных кейсов, то есть когда данные уже есть и нужно их оформить в html
    Ответ написан
    2 комментария
  • Как правильно внеднять зависимости в контроллер symfony3?

    @shaqster
    Symfony3 Guru
    Достаточно посмотреть реализацию класса Controller и все станет очевидно. Ссылка на экземпляр контейнера попадает в контроллер через метод setContainer, которым пользуется DI. Поэтому вы вполне оправданно получаете ошибку.

    Отвечая на ваш вопрос: не внедряйте зависимости в контроллер. Дергайте их в action по мере необходимости, а лучше - выкидывайте всю бизнес логику в менеджеры, репозитории, провайдеры, билдеры, etc и используйте action только для рендеринга ответа.
    Ответ написан
    Комментировать
  • PHP фреймворк для начинающего разработчика?

    @JihadTV
    Symfony. Выбрал бы уже за потрясающую документацию, которая нивелирует "сложность".
    Вообще лучше привыкать к действительно качественному и очень продуманному фреймворку, чем юзать всякие поделки вроде микрофреймворков.
    Ответ написан
    Комментировать
  • PHP фреймворк для начинающего разработчика?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Фреймворков в целом, которые достигли должного уровня популярности и народного признания - не так уж много (если говорить о PHP-фреймворках).

    Для начинающего, с целью понять сущность MVC, "пощупать" некоторые аспекты фреймворка, такие например, как загрузка библиотек и пр. подобности, я бы порекомендовал Вам CodeIgniter. Отличная документация, довольно много людей, кто сможет Вам ответить на возникающие вопросы, есть документация на русском. А так же, минимальное количество "лишнего" из коробки, например, шаблонизаторов (которые Вы можете самостоятельно подключить, если очень хочется).

    После этого фреймворка, промежуточным, можно было бы считать Kohana, но, он что-то то "умирает", то снова "воскресает"... С документацией на него, по моему, всё так же плохо (читай "не очень хорошо") как и всегда... но, по нему есть несколько неплохих видео-уроков.

    Суда же можно отнести Yii, на мой взгляд, он застрял где-то между "большими" и "маленькими" фреймворками. Маленьким его уже не назовёшь, по ряду признаков, а до большого и целостного - он ещё не дотягивает. Но, он довольно популярен на просторах бывшего СССР (по понятным для многих причинам), в виду чего имеет довольно большое русскоговорящее сообщество и целую толпу ярых фанатов.

    Далее, в обязательном порядке будет идти Laravel - превосходная документация, примеры и фантастическое количество видео-уроков (если хорошо понимаете английский). Отличный фреймворк собранный на базе Symfony. Относится уже к "большим".

    Ну а когда станете совсем матёрым программистом, и "лишний" код будет писать уже не в моготу, когда изучите все основные аспекты разработки, в том числе "сервис контейнеры", "внедрение зависимостей", будете понимать основные сетевые протоколы на низком уровне... а качество и разделяемость кода - будет одним из приоритетных условий - рекомендую обязательно ознакомиться с Symfony. Уроков по нему, довольно небольшое количество, вменяемого материала на русском языке - практически нет вообще... Но, достаточно легко изучается когда есть хороший багаж знаний и опыт работы с другими фреймворками.

    P.S. Я понимаю, что Вы спрашивали "какой фреймворк учить первым?", а не какие они бывают вообще. Но, дабы предостеречь Вам от вопросов типа "какой фреймворк учить вторым?" или "почему Symfony в роли первого фреймворка так тяжело изучать?" и массы прочих подобных - озвучил одни из самых популярных фреймворков в мире веб-разработок в ракурсе PHP.
    Ответ написан
    1 комментарий
  • Как многомерный массив превратить в одномерный?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    array_column()

    $input = array(
      array(
        "id" => "1338",
      ),
      array(
        "id" => "3727",
      ),
      array(
        "id" => "3849",
      )
    );
    
    var_dump(array_map('intval', array_column($input, 'id')));
    Ответ написан
    Комментировать
  • Как подменить класс?

    @stormdi
    в вашем коде нет вызова родительского конструктора, может быть в этом проблема?
    Ответ написан
    Комментировать
  • Как правильно использовать синглтон Бд?

    @dev400
    правильно использовать инверсию зависимостей и передать готовый объект класса соединения в нужную модель. Синглтон это антипаттерн, зачем он вообще тут?
    Ответ написан
    Комментировать
  • Почему ошибка PHP в коде?

    @kryvel
    Системный администратор
    Потому что в heredoc идет обработка переменных. используйте nowdoc
    nowdoc
    Ответ написан
    Комментировать
  • Какую выбрать версию Symfony для нового большого проекта?

    by25
    @by25
    Веб-разработчик
    Берите 3.1.x и после выхода мажорной версии обновляйтесь. Как правило api стабильный и миграция совсем безболезненная.
    После можно остановиться на lts-релизе 3.4
    Ответ написан
    Комментировать
  • Какую выбрать версию Symfony для нового большого проекта?

    slimus
    @slimus
    Symfony, Golang
    Stepan513 А вы уверены что те бандлы вам понадобятся? У себя новые проекты стараемся начинать на 3.х версии, даже если нет официальных бандлов с поддержкой 3.x, портируем их и отдаем в сообщество.
    Ответ написан
    Комментировать
  • Как правильно интегрировать Google Calendar API в Symfony?

    miraage
    @miraage
    Старый прогер
    Сначала английский подтяните. Ошибка все за себя говорит.
    Ответ написан
    6 комментариев
  • Как правильно вывести дату php?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    А теперь прочитайте ваш код вслух. НУ вот серьезно, он же не читабелен вообще. К примеру вот:

    $from = new \DateTime('14:30');
    $to = new \DateTIme('17:00');
    
    $now = new \DateTime();
    if ($from < $now && $now < $to) {
      // ваш код
    }


    Тут просто и понятно что откуда и куда, не нужно много думать что бы это прочитать и понять что вы хотите сделать. А в вашем варианте.... словом код ревью не пройдет.
    Ответ написан
    1 комментарий
  • Sub-request или service?

    skobkin
    @skobkin
    Гентушник, разработчик на PHP и Symfony.
    Первый вариант вполне нормальный.
    Второй - довольно бессмысленный. Городить расширение для того, для чего оно не нужно.
    Третий - не очень хорош, т.к. в данном случае абсолютно левым контроллерам придётся что-то знать о заголовке, хотя они занимаются совсем другим.
    Четвёртый - тоже не лучшая мысль.
    Пятый - пожалуй, тоже.

    Я бы выбрал первый вариант, когда отдельный экшен занимается выводом данных для хидера или сайдбара.
    Ответ написан
    5 комментариев
  • Как объединить миграции doctrine?

    skobkin
    @skobkin
    Гентушник, разработчик на PHP и Symfony.
    Можно просто сгенерировать новую миграцию на чистой базе.
    Ответ написан
    Комментировать
  • Как вывести нужное значения из спецефичного JSON массива через PHP?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    Вы правы, так действительно лучше не делать.
    Но удобного способа сделать это на php нет.
    Вы можете:
    • Подключить библиотеку для работы с коллекциями (например пакет Collection из Laravel). На средних и крупных проектах я предпочитаю именно такой путь, чтобы не изобретать велосипед.
    • Использовать array_filter в комбинации с reset.
    • Обходить элементы массива циклом и прерывать его, когда найден нужный элемент.
    Ответ написан
    Комментировать
  • Почему Symfony не использует routing.yml из бандла?

    новый роут-конфиг (в бандле src/AppBundle/Resources/config/routing.yml) нужно импортировать в главный роут-конфиг (в app/config/routing.yml): symfony.com/doc/2.8/book/routing.html#including-ex...
    Ответ написан
    4 комментария
  • Как реализовать сортировку корневых элементов в Doctrine Extensions Tree?

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

    1. Это не get-данные. Это называется "фрагмент"
    2. Браузеры не передают фрагмент на сервер, поэтому, в общем и целом, в пыхе его никак не получить.
    3. Можно получить фрагмент в JS и передать на сервер AJAX-запросом.
    4. Или с помощью JS составить новый url и сделать на него перенаправление.
    5. Фрагмент в таком формате обычно предназначеначается для обработки именно JS'ом.
    Ответ написан
    3 комментария