Используя простой старый сервер Apache, вы делаете свой запрос на Symfony с помощью localhost:80/acme/app.php/routes
Итак, app.php
или app_dev.php
- это ваш Front Controller. Зная это, вы можете почти забыть об этом. Но когда вы используете встроенный PHP-сервер, вы можете напрямую обращаться к localhost:8000/routes
.
Я заглянул в файл сценария console
, и он выглядит как app.php
но мы вызываем его только один раз, в начале сервера. Где клей?
console
файл является фронт-контроллером среды CLI вашего приложения Symfony. server:run
является частью этой среды и может быть найден в FrameworkBundle: ServerRunCommand
(EDIT: с Symfony 3.3, эта команда может быть найдена в WebServerBundle)
Он запускает встроенный веб-сервер PHP: php -S localhost:8000
и направляет все входящие запросы на так называемый скрипт маршрутизации. В случае среды dev - маршрутизатор router_dev.php
внутри FrameworkBundle.
Этот файл маршрутизатора имеет следующую строку:
$_SERVER['SCRIPT_FILENAME'] = $_SERVER['DOCUMENT_ROOT'].DIRECTORY_SEPARATOR.'app_dev.php';
Который притворяется, что входящий запрос был сделан в файл app_dev.php
. (Так localhost:8000/something
становится localhost:8000/app_dev.php/something
после этого скрипта маршрутизатора). Затем он включает файл app_dev.php
для обработки рендеринга сайта.