require:
- docker
- composer
- symfony cli
# composer require symfony/orm-pack
doctrine/doctrine-bundle instructions:
* Modify your DATABASE_URL config in .env
* Configure the driver (postgresql) and
server_version (15) in config/packages/doctrine.yaml
Требуется создать файл docker-compose в нем прописать:
version: "3.9"
services:
database:
container_name: postgres
image: postgres:13.3-alpine
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: 123123
POSTGRES_HOST_AUTH_METHOD: trust
ports:
- "5433:5432"
Для использования атрибутов требуется изменить конфигурацию doctrine. В файле конфигурации config/packages/doctrine.yaml добавить свойство:
doctrine.orm.mappings.App.type: attribute
Symfony Maker помогает вам создавать пустые команды, контроллеры, классы форм, тесты и многое другое, так что вы можете забыть о написании шаблонного кода. Этот пакет является альтернативой SensioGeneratorBundle для современных приложений Symfony и требует использования Symfony 3.4 или новее. Этот пакет предполагает, что вы используете стандартную структуру каталогов Symfony 4, но многие команды могут генерировать код в любом приложении.
composer require --dev symfony/maker-bundle
Использование:
./bin/console list make
./bin/console make:entity
Документация https://symfony.com/bundles/SymfonyMakerBundle/current/index.html
Создание локальных переменных:
symfony var:export --multiline > .env.local
Создание миграции:
./bin/console make:migration
./bin/console doctrine:migrations:diff
- проверяет базу данных и сущности, если есть расхождения тогда создаёт миграцию.
Выполнить миграцию:
./bin/console doctrine:migrations:migrate
Запустить сервер:
symfony serve
Documentation: https://phpstan.org/user-guide/getting-started
composer require --dev phpstan/phpstan
vendor/bin/phpstan analyse src
Documentation: https://cs.symfony.com
composer require --dev friendsofphp/php-cs-fixer
./vendor/bin/php-cs-fixer fix
Установка зависимостей: composer require --dev orm-fixtures
Исользуем fixtures:
./bin/console make:fixtures
# The class name of the fixtures to create (e.g. AppFixtures):
# BookCategoryFixtures
./bin/console doctrine:fixtures:load --purge-with-truncate
- перед загрузкой делаем truncate
Докментация: https://docs.phpunit.de/en/10.3/
Настройка(временно, так делать нельзя):
- Закоментировать в файле
config/packages/doctrine.yaml
строкуwhen@test.doctrine.dbal.dbname_suffix
. Это делается для того, что бы в тестах использовалась dev база данных
Установка зависимостей:
composer require --dev phpunit/phpunit
- бибилиотекаcomposer require --dev symfony/test-pack
- хелперы symfony
Документация приложения доступна по ${host}:${port}/api/doc
Зависимости:
composer require doctrine/annotations
- в php уже есть функционал аттрибутов, но не все библиотеки могут с ними работать. Некоторые библиотеки еще работают только с аннотациями.composer require -W nelmio/api-doc-bundle
composer require twig
composer require asset
Добавлены UNIT и FUNC тесты, добавлен контроллер и сервис.
Требуемые зависимости:
Doctrine test bundle - Этот пакет предоставляет функции, которые помогут вам более эффективно запускать набор тестов вашего приложения на основе Symfony с помощью изолированных тестов.
https://github.com/dmaicher/doctrine-test-bundle
composer require --dev dama/doctrine-test-bundle
Также требуется добавить extension в файл конфигурации PHPUnit:
<extensions>
<extension class="DAMA\DoctrineTestBundle\PHPUnit\PHPUnitExtension" />
</extensions>
Еще одна зависимость:
phpunit-json-assert - Эта библиотека добавляет в PHPUnit несколько новых утверждений, которые позволяют легко и лаконично проверять сложные структуры данных (часто, но не обязательно, документы JSON) с использованием выражений JSONPath и схем JSON.
https://packagist.org/packages/helmich/phpunit-json-assert
composer require --dev helmich/phpunit-json-assert
7.1. Установка monolog
composer require symfony/monolog-bundle
7.2. Настройка monolog для dev (файл config.packages.monolog.yaml):
when@dev:
monolog:
handlers:
main:
type: stream
path: "php://stderr"
level: debug
channels: ["!event"]
7.3. Отключить ошибку о favicon.ico
php -r "copy('https://symfony.com/favicon.ico', 'public/favicon.ico');"
7.4. Добавить параметр в контекст(autowired)
Объявляем перенную $isDebug в файле config/service.yaml, эта переменная будет доступна в через autowired:
services:
_defaults:
bind:
bool $isDebug: '%kernel.debug%'
Режим дебага отключается в prod профиле. Для того что бы указать prod режим надо добавить строку "export APP_ENV=prod" в файл env.local
Установка валидатора:
composer require symfony/validator