Быть может эта статья поможет тем кто хочет познакомиться с Symfony.

Я изучаю этот фреймворк третий месяц и решил структурировать те знания, что получил. Но описывать буду в порядке исполнения (псевдокомпиляции) проекта фреймворком.

Сначала опишу как я понимаю принцип работы этого фреймворка.

Есть папка src  в которой программисты описывают свой сайт в стиле MVC. То есть модель отдельно, контроллеры отдельно и внешний вид отдельно. При этом все можно описать на чистом php, но куда понятней будет использование других форматов, о них позже, так сказать, по порядку.

В самой папке находятся подпапки, так сказать, решений, а уже внутри них папки контроллеров, репозиториев и так далее.

Теперь как я понимаю порядок работы фреймворка. Первое, что происходит это проверка обработчика в кеше. Если он там есть, то там и запускается, а в кеше, как я понял находятся php файлы сформированные из файлов другого типа и из логики выбора нужного контроллера. Другими словами он как и положено ускоряет работу, так как не нужно перелопачивать почти весь каталог src, а это требовалось бы... поймете позже почему.

Итак в кеше этого обработчика нет! Что делает фреймворк?

1. Читает файл /app/config/routing.yml именно в этом файле описано какие контроллеры обрабатывают те или иные пути (страницы) сайта. Как только нашел соответствующий путь - запускает соответствующий контроллер.

Но здесь немного подробней. Во первых Вы можете использовать сторонние модули и у них есть свои routing.yml и именно на них может ссылаться этот, то есть возможна рекурсия. Во вторых Вы действительно можете прямо здесь указать нужный контроллер (файл). Ну и третий вариант Вы можете указать в ресурсе путь к пакке с контроллерами, и указать тип - annotation, и после этого в файле php контроллера перед функцией обрабатывающей страницу указывается в комментарии путь к этой странице, например:

    /**
     * @Route("/hi/")
     * @Template()
     */
function actionHi( Request $request ) {

}

При открытии страницы http(s)://your.site/hi

спработает функция actionHi()

Удобно писать новые страницы и соответственно функции, но теперь их описание хранится в контроллерах...

Итак контроллер запущен, но ему во первых нужны данные, а во вторых нужно вывести результат.

Запрос как видно уже передан в функцию, если же нужны данные из БД, то можно вызвать менеджеры данных. Фактически объекты описанные в php файлах в директории src/решение/Manager