Категорії

Консоль Symfony2: посібник для початківців

15.09.2015
Symfony2 console: tutorial for beginners
Автор:

У Symfony існує дуже багато консольних команд, які допоможуть вам у роботі. У цій статті розглянемо найбільш часто використовувані команди Symfony. Наприклад, команда для очищення кешу:

$ php app/console cache:clear

Майже кожна консольна команда має необов’язкові або обов’язкові параметри або властивості. Наприклад, та ж сама команда для очищення кешу може мати такі опції:

$ php app/console cache:clear --env=dev
$ php app/console cache:clear --env=prod

Опціями --env=dev і --env=prod ми вказуємо, в якому середовищі ми очищуємо кеш. Symfony має наступні опції для кожної консольної команди:

  • --help (-h) — виводить повідомлення довідки;
  • --quiet (-q) — не виводить жодного повідомлення;
  • --verbose (-v|vv|vvv) — підвищує детальність повідомлень: 1 — звичайне виведення, 2 — більш детальне виведення і 3 — налагодження;
  • --version (-V) — виводить версію додатку;
  • --ansi — вмикає ANSI;
  • --no-ansi — вимикає ANSI;
  • --shell (-s) — запускає оболонку;
  • --process-isolation — запускає команди з оболонки як окремий процес;
  • --env=[...] (-e=[...]) — вказує назву середовища dev або prod (за замовчуванням — "dev");
  • --no-debug — вимикає режим налагодження.

Для виведення списку усіх команд нам потрібно ввести наступну команду: php app/console list або просто php app/console.

Symfony console doctrine

Інтеграція Doctrine2 ORM для роботи з БД пропонує кілька консольних команд під простором імен doctrine. Для перегляду списку команд ви можете використовувати команду списку:

$ php app/console list doctrine

Ви можете знайти більш детальну інформацію про будь-яку з цих команд, виконавши команду довідки. Розглянемо більш детально деякі з найчастіше використовуваних команд:

  • $ php app/console doctrine:database:create [--connection=...] ⎯ створить БД, яка записана у ваших конфігураціях;
  • $ php app/console doctrine:database:drop [--connection=...] [--force] ⎯ видалить БД;
  • $ php app/console doctrine:generate:entity [--entity=...] [--fields=...] [--format=...] [--with-repository] ⎯ створить новий об'єкт Doctrine всередині вашого bundle. Дана команда має наступні додаткові опції:
  1. --entity ⎯ вказує ім'я класу entity;
    --fields ⎯ вказує конфігурації для нових полів;
    --format ⎯ вказує формат для файлу конфігурації (php, xml, yml або annotation, за замовчуванням ⎯ "annotation");
    --with-repository ⎯ генерує репозиторій для даної entity.

Приклад даної команди:

$ php app/console doctrine:generate:entity --entity=AcmeUserBundle:User 

$ php app/console doctrine:generate:entity --entity=AcmeBlogBundle:Post --format=yml --fields="title:string(255) body:text" --with-repository

$ php app/console doctrine:generate:entities <name>  [--path=...] [--no-backup] ⎯ створить класи entities і їх методи за вашими конфігураціями. Параметр <name> є обов’язковим, тут ми вказуємо повне ім'я entities або bundle. Приклади:

$ php app/console doctrine:generate:entities MyCustomBundle
$ php app/console doctrine:generate:entities MyCustomBundle:User
$ php app/console doctrine:generate:entities MyCustomBundle/Entity/User

$ php app/console doctrine:generate:form <entity> ⎯ згенерує форму для вашого <entity>. Приклад:

$ php app/console doctrine:generate:form  MyCustomBundle:Entity

$ php app/console doctrine:generate:crud [--entity=...] [--route-prefix=...] [--with-write] [--format=...] ⎼ створить CRUD на основі Doctrine entity, тобто генерує контролер для даної entity з місцезнаходженням у вказаному bundle. Цей контролер дозволяє виконувати п'ять основних операцій на entity:

  1. 1. Виведення списку всіх записів;
  2. 2. Показ одного запису по його первинному ключу;
  3. 3. Створення нового запису;
  4. 4. Редагування існуючого запису;
  5. 5. Видалення існуючого запису.

Приклад:

$ php app/console doctrine:generate:crud --entity=AcmeBlogBundle:Post --route-prefix=post --format=annotation

$ php app/console doctrine:schema:create — створює таблиці за вашими конфігураціями;

$ php app/console doctrine:schema:update --force — оновлює схему БД;

Symfony console doctrine migration

$ php app/console doctrine:migrations:diff — створює міграції шляхом порівняння між поточною БД та конфігураціями entities;

$ php app/console doctrine:migrations:execute <version> [--up] [--down] — вказану міграцію <version> вносить у БД --up або видаляє з БД --down;

$ php app/console doctrine:migrations:generate — створює порожній клас міграції;

$ php app/console doctrine:migrations:latest — виводить номер останньої версії;

$ php app/console doctrine:migrations:migrate — виконує міграцію до зазначеної версії або останньої доступної версії;

$ php app/console doctrine:migrations:status — показує список міграцій.

Рекомендація: Для роботи з БД краще використовувати migrations замість schema-tool. Коли ви використовуєте schema-tool, історія змін бази даних не зберігається, а для production/staging середовища це великий недолік. Крім того, міграції дають вашій команді знати, коли прийшов час, щоб оновити свої схеми. Якщо ви використовуєте лише schema-tool, ваші товариші по команді повинні кожен раз виконувати doctrine:schema:update --force, коли вони підтягують зміни, тому що вони не будуть знати, якщо схема дійсно змінилася. При використанні міграції ви завжди бачите, що є деякі оновлення в папці міграції, які означають, що ви повинні оновити вашу схему. І якщо після виконання міграції ви зрозуміли, що зробили помилку в конфігураціях entity або її поля, ви запросто можете відмінити зміни, виконавши команду doctrine:migrations:execute <version> [--down]. Але міграції у Symfony не встановлені за замовчуванням із коробки, для цього потрібно додатково встановити DoctrineMigrationsBundle за допомогою команди

$ composer require doctrine/doctrine-migrations-bundle "^1.0"

Інші консольні команди

$ php app/console generate:bundle [--namespace="..."] [--dir="..."] [--bundle-name="..."] [--format="..."] [--structure] — генерує новий bundle. За замовчуванням, команда взаємодіє з розробником, щоб налаштувати генерацію. Приклад:

$ php app/console generate:bundle --namespace=Acme/BlogBundle --dir=src --format=annotation

$ php app/console generate:controller [--controller="..."] [--route-format="..."] [--template-format="..."] [--actions="..."] — команда дозволяє створити новий контролер всередині bundle;

--controller="..." — ми вказуємо ім’я bundle, у якому створюємо контролер та ім’я самого контролера;

--route-format="..." — формат конфігурацій маршрутизації (yml, xml, php, annotation, за замовчуванням — annotation);

--actions="..." — створює actions в контролері (дозволяються різні значення);

--template-format="..." — формат, що використовується для створення шаблонів (twig, php, за замовчуванням — twig).

Приклад:

$ php app/console generate:controller --controller=AcmeBlogBundle:Post

$ php app/console router:debug — виводить список усіх маршрутів додатку;

$ php app/console assetic:dump — фізично записує всі файли CSS, JavaScript, зображення, що необхідні для вашого Dev середовища. Великим недоліком є необхідність запуску щоразу при оновленні веб-ресурсів. На щастя, за допомогою команди php app/console assetic:watch файли будуть оновлені автоматично, якщо вони змінюються;

$ php app/console assets:install — використовується для встановлення веб-ресурсів (CSS, JavaScript, зображення). При виконанні без параметрів команда копіює в web/ всі файли, знайдені в директоріях Resources/public/ вашого додатку.

3 votes, Рейтинг: 5

Також по темі

1

Важливими складовими якості веб-продукту є його кросбраузерність та кросплатформенність. Тестування того, як сторінки вашого продукту відображаються на різних десктопних браузерах та мобільних...

2

Соцмережі та інтернет-торгівля — це дві сили, які керують інтернетом. Що ми отримаємо, якщо об'єднаємо їх? Суперсилу! ;) Комерційні сайти з інтеграцію в соцмережі — один з найновіших, але уже дуже...

3

Простий сайт на Drupal 7 можна створити, використовуючи лише адміністративний інтерфейс і простий текстовий редактор, але коли справа доходить до більш серйозного проекту, не обійтись без...

4

Drupal пропонує цілий ряд можливостей для підвищення зручності та надійності сайту. Але не забувайте про один з найважливіших аспектів роботи Drupal-сайту: необхідність регулярно робити надійні...

5

Розробка мобільних додатків є порівняно новою сферою розробки програмного забезпечення, але вона швидко розвивається, і є досить прогресивною, адже мобільні пристрої використовуються все ширше. У...

Давайте обговоримо ваш проект у всіх деталях

Шукаєте хороших Drupal-розробників? А ми тут! Яким би ви хотіли бачити проект своєї мрії? Зв’яжіться з нами і розкажіть про це. Із задоволенням втілимо вашу мрію в життя!

Приєднуйтесь до людей, які вже підписалися!

Хочете бути в курсі важливих і цікавих речей, що відбуваються? Ми інформуватимемо Вас про розвиток та нові події в Drupal, дизайні, тестуванні та ін.

Відпишіться у будь-який час