Введение в Symfony 4: Создание вашего первого приложения Hello World

Бороться до даты с Symfony 2.8 в вашем проекте? 30 декабря 2017 года был выпущен Symfony 4, представляющий новый рабочий процесс, основанный на инструменте «Symfony Flex», который заменяет и улучшает Symfony Installer и Symfony Standard Edition, позволяя вместо проекта наследовать проект на основе состава распространения. По словам разработчиков Fabian Potencier и Symfony, этот новый способ работы стал проще, гибче и даже мощнее.

Первое, что вам нужно знать, это то, что, как обычно, в основном выпуске Symfony, структура проекта изменилась:

my-symfony-project/
├── assets/
├── bin/
│   └── console
├── config/
│   ├── bundles.php
│   ├── packages/
│   ├── routes.yaml
│   └── services.yaml
├── public/
│   └── index.php
├── src/
│   ├── ...
│   └── Kernel.php
├── templates/
├── tests/
├── translations/
├── var/
└── vendor/

Пакеты теперь загружены в /config/bundles.php файл вместо ядра. Symfony 4 не имеет известных app/config/parameters.yml файл, но вместо этого использует переменные среды. Переменные среды хранятся в .env файл в корневом каталоге вашего проекта, подход, который большинство фреймворков делают на других языках. Это также одна из рекомендаций Манифеста о применении 12-фактора. Это приводит к другому большому изменению, широко известному app_dev.php инструмент больше не доступен, он полностью заменен переменной окружения APP_ENV с возможными значениями dev и prod.

С общей точки зрения, есть много изменений, сравнивающих его с Symfony 3, однако теоретически к нему должно быть легко привыкнуть, читая документы. Вы даже можете обновить приложения на базе Symfony 3 до Symfony 4 следуя этим шагам на сайте Symfony. Чтобы ознакомиться с рабочим процессом Symfony 4, мы создадим приложение Hello World, загрузив Symfony, создав контроллер, базовый маршрут и установив веб-профилировщик.

Требования

Чтобы начать создавать свой первый проект Symfony 4, вам потребуется в вашей среде разработки:

  1. PHP> = 7.1: для работы Symfony требуется как минимум эта версия PHP.
  2. Композитор установлен: Установка пакетов, зависимостей и инструментов стала проще благодаря composer.

В этой статье мы не будем фокусироваться на настройке локального сервера, так как мы будем использовать встроенный веб-сервер PHP только для целей тестирования.

1. Создание вашего проекта

Чтобы создать свой первый проект Symfony, следуя стандартной документации, мы не будем использовать установщик Symfony или стандартную версию, а будем загружать гибкую версию с пакет Symfony / скелет. Этот пакет содержит базовую структуру для любого проекта на основе Symfony 4 и может быть установлен с помощью следующей команды:

composer create-project symfony/skeleton [your project name]

В этом случае именем нашего проекта будет песочница, поэтому для его создания наша команда будет выглядеть так:

composer create-project symfony/skeleton sandbox

Выполнение команды в нашей командной строке сгенерирует вывод, подобный следующему:

Installing symfony/skeleton (v4.0.0)
- Installing symfony/skeleton (v4.0.0): Loading from cache
Created project in sandbox
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 21 installs, 0 updates, 0 removals
- Installing symfony/flex (v1.0.44): Loading from cache
- Installing symfony/polyfill-mbstring (v1.6.0): Loading from cache
- Installing symfony/console (v4.0.0): Loading from cache
- Installing symfony/routing (v4.0.0): Loading from cache
- Installing symfony/http-foundation (v4.0.0): Loading from cache
- Installing symfony/event-dispatcher (v4.0.0): Loading from cache
- Installing psr/log (1.0.2): Loading from cache
- Installing symfony/debug (v4.0.0): Loading from cache
- Installing symfony/http-kernel (v4.0.0): Loading from cache
- Installing symfony/finder (v4.0.0): Loading from cache
- Installing symfony/filesystem (v4.0.0): Loading from cache
- Installing psr/container (1.0.0): Loading from cache
- Installing symfony/dependency-injection (v4.0.0): Loading from cache
- Installing symfony/config (v4.0.0): Loading from cache
- Installing psr/simple-cache (1.0.0): Loading from cache
- Installing psr/cache (1.0.1): Loading from cache
- Installing symfony/cache (v4.0.0): Loading from cache
- Installing symfony/framework-bundle (v4.0.0): Loading from cache
- Installing symfony/yaml (v4.0.0): Loading from cache
- Installing symfony/dotenv (v4.0.0): Loading from cache
Writing lock file
Generating autoload files
Symfony operations: 4 recipes (aa684fb587b2a7b45ff0bf0d50f5d7f2)
- Configuring symfony/flex (>=1.0): From github.com/symfony/recipes:master
- Configuring symfony/console (>=3.3): From github.com/symfony/recipes:master
- Configuring symfony/routing (>=3.3): From github.com/symfony/recipes:master
- Configuring symfony/framework-bundle (>=3.3): From github.com/symfony/recipes:master
Executing script cache:clear [OK]
Executing script assets:install --symlink --relative public [OK]
What's next?
* Run your application:
1. Change to the project directory
2. Execute the php -S 127.0.0.1:8000 -t public command;
3. Browse to the http://localhost:8000/ URL.
Quit the server with CTRL-C.
Run composer require server for a better web server.
* Read the documentation at https://symfony.com/doc

До этого момента у вас было 100% функциональное приложение Symfony 4, поэтому вы можете протестировать со встроенным сервером PHP в вашем браузере, переключившись на каталог вашего проекта с помощью командной строки и запустив сервер с помощью следующей команды:

REM switch to your project's directory
cd sandbox
REM Run the following command to start the application
php -S 127.0.0.1:8000 -t public

После выполнения команды вывод в вашей командной строке будет похож на:

Встроенный веб-сервер PHP для Symfony 4

И если вы получите доступ к указанному локальному URL в вашем любимом браузере, вы увидите приветственное сообщение Symfony:

Приветственная страница Symfony 4

Круто не так?

2. Создание вашего первого контроллера

Далее мы продолжим работу с самой распространенной задачей на основе MVC — созданием контроллера. С новой структурой Symfony у вас будет изначально папка Controller в каталоге / src вашего проекта, где будут расположены контроллеры вашего приложения. Как обычно, пространство имен для контроллеров в этом случае будет App \ Controller, так что вы можете создать первый контроллер, а именно DefaultController.php со следующим содержанием:

Как видите, мы уже зарегистрировали действие с именем index, которое будет возвращать HTML в качестве первого параметра в качестве ответа. Поскольку это демо, наш ответ очень прост, однако вы можете сделать его сложным, реализовав как обычно Twig или PHP Views.

3. Регистрация и доступ к вашему первому маршруту

Наш контроллер уже существует, однако пока нет способа получить доступ к действию index, поэтому вам нужно будет зарегистрироваться в качестве первого шага маршрута. но в Symfony 4 вместо этого вы найдете файл config / rout.yaml. Вы можете зарегистрировать индексный маршрут следующим образом:

# config/routes.yaml
index:
path: /
defaults: { _controller: 'App\Controller\DefaultController::index' }

Вы также можете сослаться на другой файл yaml, который содержит больше маршрутов, однако мы будем упрощать его. Теперь, если вы получаете доступ к маршруту встроенного сервера PHP (в нашем случае http://127.0.0.1:8000/) ты найдешь:

Symfony 4 Hello World

Ваше привет сообщение мира. Как вы можете видеть, рабочий процесс остается почти таким же, как и в более старых версиях Symfony, однако вы можете пока не чувствовать себя комфортно, поскольку есть вещи, которых нет в этой версии, такие как панель отладки.

4. Установка Symfony Profiler

Заметили что-то странное после просмотра вашего сообщения Hello World? Где находится панель отладки красоты, которая была в каждом проекте Symfony? Как уже говорилось, Flex хорош для разработчика, который хочет начать с малого, без множества начальных зависимостей. Вот так Symfony <= 4 works, during the installation of your first symfony project you will face the installation of a lot of bundles like Doctrine, Swiftmailer and other things that in some cases the developer doesn't need. Symfony Flex is all about making the creation of a project based on Symfony very simple and easy to create, however without losing the ability to build more complex projects with a lot of dependencies.

Так что теоретически вещь работает следующим образом: Установите то, что вам нужно, не более. Проблема такого подхода для опытных разработчиков Symfony сталкивается с болью установки каждого отдельного пакета, который вам нужен вручную, поэтому Фабиан Потенциер упомянул об использовании так называемых «пакетов». Эти пакеты являются обычным Git-репозиторием, зарегистрированным в Composer, который содержит composer.json файл, который ссылается на набор связанных пакетов.

Уже есть очень полезный пакет для целей отладки, который включает в себя такие пакеты, как phpunit-bridge и наша любимая панель отладки, а именно debug-pack которые вы можете установить с помощью следующей команды:

composer require debug-pack

Заметка

Помните, что debug-pack - это псевдоним, определенный Symfony Flex, поэтому, если вы попытаетесь сделать то же самое в проекте Symfony, не основанном на гибких данных, вы получите сообщение об ошибке, что пакет не существует.

После выполнения команды require вы получите вывод, похожий на:

Using version ^1.0 for symfony/debug-pack
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 15 installs, 0 updates, 0 removals
- Installing symfony/polyfill-php72 (v1.6.0): Loading from cache
- Installing symfony/var-dumper (v4.0.0): Loading from cache
- Installing symfony/phpunit-bridge (v4.0.0): Downloading (100%)
- Installing twig/twig (v2.4.4): Loading from cache
- Installing symfony/twig-bridge (v4.0.0): Loading from cache
- Installing symfony/web-profiler-bundle (v4.0.0): Loading from cache
- Installing symfony/twig-bundle (v4.0.0): Loading from cache
- Installing symfony/stopwatch (v4.0.0): Loading from cache
- Installing monolog/monolog (1.23.0): Loading from cache
- Installing easycorp/easy-log-handler (v1.0.3): Downloading (100%)
- Installing symfony/monolog-bridge (v4.0.0): Downloading (100%)
- Installing symfony/monolog-bundle (v3.1.2): Downloading (100%)
- Installing symfony/debug-bundle (v4.0.0): Downloading (100%)
Writing lock file
Generating autoload files
Symfony operations: 6 recipes (348c2becb437cad80d6556e397d1c765)
- Configuring symfony/phpunit-bridge (>=3.3): From github.com/symfony/recipes:master
- Configuring symfony/web-profiler-bundle (>=3.3): From github.com/symfony/recipes:master
- Configuring symfony/twig-bundle (>=3.3): From github.com/symfony/recipes:master
- Configuring easycorp/easy-log-handler (>=1.0): From github.com/symfony/recipes:master
- Configuring symfony/monolog-bundle (>=3.1): From github.com/symfony/recipes:master
- Configuring symfony/debug-bundle (>=3.3): From github.com/symfony/recipes:master
Executing script cache:clear [OK]
Executing script assets:install --symlink --relative public [OK]

После успешной установки вы можете использовать профилировщик Symfony в своем проекте:

Symfony 4 Web Profiler

Также обратите внимание, что вы можете удалить пакет, удалив его с тем же идентификатором:

composer remove debug-pack

Однако что делать, если вы не хотите использовать все пакеты пакета? Затем просто следуйте логике Flex, которая будет устанавливать только то, что вам нужно и использовать, в этом случае это будет профилировщик Symfony с помощью следующей команды:

composer require profiler

Это установит меньше пакетов, чем пакет отладки, и покажет нам также нашу панель отладки:

Using version ^1.0 for symfony/profiler-pack
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 8 installs, 0 updates, 0 removals
- Installing twig/twig (v2.4.4): Loading from cache
- Installing symfony/polyfill-php72 (v1.6.0): Loading from cache
- Installing symfony/var-dumper (v4.0.0): Loading from cache
- Installing symfony/twig-bridge (v4.0.0): Loading from cache
- Installing symfony/web-profiler-bundle (v4.0.0): Loading from cache
- Installing symfony/twig-bundle (v4.0.0): Loading from cache
- Installing symfony/stopwatch (v4.0.0): Loading from cache
Writing lock file
Generating autoload files
Symfony operations: 2 recipes (d9ef4bccbc708c404cd724696fa62a4f)
- Configuring symfony/web-profiler-bundle (>=3.3): From github.com/symfony/recipes:master
- Configuring symfony/twig-bundle (>=3.3): From github.com/symfony/recipes:master
Executing script cache:clear [KO]

С новым Symfony предстоит еще много работы и обучения, так что следите за обновлениями, читайте документацию и новости о новой версии. Фабиан Потенциер опубликовал потрясающее введение и быстрая демонстрация Symfony 4, поэтому, возможно, вы захотите взглянуть, чтобы узнать больше основных моментов, которые могут быть не включены в эту статью. Также есть много деталей, которые мы пропустили, так как лучше читать их с официального сайта, мы рекомендуем вам также читать блог Фабьена Потенсье для новостей о SF4.

Ссылка на основную публикацию
Adblock
detector