evercode/symfony-skeleton

This package is not installable via Composer 1.x, please make sure you upgrade to Composer 2+. Read more about our Composer 1.x deprecation policy.

The "Symfony Evercodelab Edition" skeleton with basic configuration


README

Рады представить вам Symfony EvercodeLab Edition, нашу небольшую доработку для Symfony Standard Edition, призванную ускорить процесс начала разработки нового приложения.

Кроме стандартных компонентов Symfony2 в данный вариант включены некоторые дополнительные пакеты, которые мы обычно используем в своей работе:

  • GedmoDoctrineExtensions — расширение возможностей Doctrine. Добавляет такие полезные штуки как Timestampable (добавляет время создания, обновления), Tree (добавляет возможность работы с деревьями).
  • SonataAdminBundle — административный интерфейс для Symfony
  • KnpMenuBundle — генерация меню
  • KnpPaginatorBundle — создание пагинации
  • FosUserBundle — управление пользователями
  • FOSRestBundle — данный бандл предоставляет набор инструментов для быстрой разработки RESTful API и приложений
  • DoctrineFixturesBundle — управление фикстурами
  • DoctrineMigrationsBudnle — управление миграциями
  • LiipImagineBundle — бандл для работы с изображениями
  • VichUploaderBundle — значительно облегчает с загрузкой файлов и последующего отображения этих файлов

Установка

Для установки можно воспользоваться несколькими возможностями. Первая из них воспользоваться composer:

composer.phar create-project evercode/symfony-skeleton path/

Вторая возможность это воспользоваться клонированием с github:

git clone git@github.com:EvercodeLab/symfony-skeleton.git path/

В обоих случаях path это путь, куда будет устанавливаться новый проект.

Следующие действия идентичны для обоих вариантов, нам необходимо запустить установочный скрипт, который сделает за нас большую часть работы:

bin/setup

Скрипт выполняет следующие действия:

  • Создает необходимые директории (app/cache и app/logs) и выставляет необходимые права на них (в этом месте установочный скрипт может запросить у вас пароль для sudo, так как установка прав на папки идет от имени администратора)
  • Скачивается, если необходимо, composer, после чего происходит установка необходимых пакетов.
  • Создается база данных и прогоняются необходимые действия для придание ей рабочего вида (миграции и загрузка фикстур), в базовом варианте — создаются таблицы от FosUserBundle и загружается тестовый пользователь.

Всё, теперь наш проект готов к работе!

Запуск проекта с использованием встроенного сервера php

Для этого просто запускаем команду:

bin/start

после этого проект обновится (если есть что обновлять), после чего будет запущен тестовый сервер с адресом http://localhost и диапазоном портов от 8000 до 8010, в зависимости от того, какие порты уже заняты, а какие свободны.

Тестирование

Для тестирования мы используем Behat + Mink. Тут опять же все просто. Тесты располагаются в папочке features, и запускаются командой bin/behat. Вот в общем то и всё. Для лучшего понимания работы с Behat лучше всего обратится к документации на официальном сайте.

Так же для используем phpspec для спеков (на самом деле надо понимать, что мы используем их как юнит тесты, только тссссс!).

Деплой

Для деплоя мы используем capifony. Для того что бы он работал, нам надо внести необходимые изменения в конфигурационный файл deploy.rb.

Нюансы

Если мы использем nginx для сервера, то в некоторых случах нам необходимо внести изменения в его конфигурацию

# Your virtual host
server {
  ...
  location ~ ^/(app|app_dev|apc-.*)\.php(/|$) { { # This will allow accelerator cache (apc-{MD5HASH}.php) files to be processed by fpm
    fastcgi_pass                127.0.0.1:9000;
    ...
If you are using nginx and limiting PHP scripts that you are passing to fpm you need to allow 'apc' prefixed php files. Otherwise your web server will return the requested PHP file as text and the system won't be able to clear the accelerator cache.