Задать вопрос
Минск

Достижения

Все достижения (4)

Наибольший вклад в теги

Все теги (24)

Лучшие ответы пользователя

Все ответы (59)
  • Как разобраться в философии symfony2?

    @shoomyst
    dumb
    Symfony это конструктор, который поставляется в собранном виде. Но ничто не мешает вам его разобрать и собрать по-своему. Многие критикуют фреймворк за это качество: нет ощущения целостности как у Yii или Laravel. Похожее говорили в свое время про Zend1: монстр, куча несвязанных компонент, лучше я буду кодить в своем уютном CodeIgniter-e.

    Symfony Framework - это (грубо) HttpKernel + DependencyInjection Container (DIC) + EventDispatcher.

    Главное задачей HttpKernel является конвертирование Request в Response. Для этого он загружает и инициализируется бандлы, создает контейнер (DIC), пытается по Request определить контроллер, выполнить его и убедиться, что результат выполенения контроллера является объектом Response, если нет, то пытается преобразовать результат в Response.

    DIC занимается созданием и хранением сервисов, если совсем грубо, то это такой навороченный Registry.

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

    Бандлы лучше всего сравнить с плагинами. Есть ядро, которое было описано выше, а бандлы это плагины для него, добавляющие некий функционал (FrameworkBundle, TwigBundle, MonologBundle). FrameworkBundle это основной плагин, который добавляет основной функционал: формы, валидация, сессии, translations. При желании его тоже можно заменить как и любой другой. Другой задачей бандлов является интеграция различных библиотек в ваш проект: twig, monolog, swiftmailer (поставляются с симфони), sphinx, elastic и т.д. Ну и логика приложения так же может быть размещена в бандлах.

    Чтобы Symfony узнал про ваш бандл, его необходимо зарегистрировать в AppKernel.

    У каждого бандла есть своя конфигурация, с помощью которой он может интегрироваться в Symfony:
    1. Регистрация своих сервисов в DIC. Далее вы можете использовать их, например, в контроллере: $container->get('sphinx.search')->query(...)
    2. Бандл может повесить свои сервисы на какие-то события. Например, на событие KernelEvents::CONTROLLER, тогда ваш бандл получит управление при подборе контроллера и вы сможете обойти штатный механизм подбора и вернуть свой, который и будет выполнен.
    3. Использование тегов. Например, вы создали класс HelloWorldViewHelper и хотите его подключить в Templating. В конфигурации указываете для него тег "templating.helper" и он будет подхвачен Symfony и встроен в шаблонизатор.
    Ответ написан
    6 комментариев
  • Что учить после PHP?

    @shoomyst
    dumb
    Если вы хотите развиваться как программист, первое что стоит почитать - это основы алгоритмизации, которые закладывают базу разработчика, чего у вас судя по всему нет: поскольку многие считают, что это сегодня никому уже не надо. Языки это уже вторично: Js/Python/Ruby/Java/Go/Rust - если есть время, можно каждый глянуть по 2-4 недели на язык.
    Ответ написан
    Комментировать
  • Как получить renderView в сервисе, который не наследуется от класса Controller?

    @shoomyst
    dumb
    Если необходимо такое, значит что-то не так в архитектуре приложения.
    Если очень надо, контроллер делается сервисом и инжектится через DIC
    Ответ написан
    2 комментария
  • Стоит ли в Symfony2 заменять Assetic на связку bower + grunt, или совместить их использование?

    @shoomyst
    dumb
    Разумеется стоит.
    Assetic это так, игрушка на первое время. Потом начинают бесить постоянные тормоза, начинает не хватать гибкости инструментов nodejs. Я сейчас уже не особо слежу за развитием ассетика, но насколько мне известно там в последнее время не самым активным образом это всё дело движется.
    У ассетика есть некоторые плюсы в плане интеграции в symfony/twig, но если проект претендует на какую-то серьезность, советую при старте проекта сразу закладывать nodejs + bower + grunt/gulp - в конечном счете эта связка перекроет все плюсы ассетика.
    Ответ написан
    1 комментарий
  • Есть ли потребность в социальной сети для студенчества и вообще обучения?

    @shoomyst
    dumb
    Был уже: instudies.com
    Если у вас куча свободного времени и вы делаете в том числе для себя, можете попробовать. Коммерчески проект провалится в виду неплатежеспособности целевой аудитории.
    Можете попросить у ребят перевести проект в open source и совместно его развивать.
    Ответ написан
    2 комментария

Лучшие вопросы пользователя

Все вопросы (2)