Третий дайджест материалов по Symfony2

@Spoil_me_easy: Хочу напомнить: вы просрали уже 25 дней лета. У вас ещё 67. Удачи.

Новости

Вчера вышел первый релиз кандидат Symfony2. Т.е. не за горами релиз первой стабильной версии Symfony2, а значит его потихоньку можно использовать для реализации коммерческих проектов. УРА!

Начал работу PEAR канал Symfony2. На нем доступны отдельные компоненты фреймворка. Если вы используете эти компоненты в нескольких проектах, тогда жизнь станет чуточку проще ;).

В Symfony2 появился интерактивный генератор бандлов, который может сильно облегчить жизнь на начальных стадиях разработки проекта. Посмотрите видео — это магия :).

UPD. Совсем вылетело из головы! С недавнего времени mailing лист по симфони разделили на отдельные mailing листы для первой и для второй версии фреймворка.

Полезные ресурсы

Почитайте блог Ричарда Миллера — за относительно небольшой промежуток времени он успел написать довольно много интересных статей. К примеру, “Symfony2: Moving Away From the Base Controller” — руководство о том как избавиться от наследования базового контроллера и сделать контроллер отдельным сервисом. Использовать почерпнутые из статьи знания следует с умом. Например, Фабьен Потенсьер негативно высказывается о таком подходе.

Интересные материалы

В статье Getting into Behat with Symfony2 ребята делятся опытом работы с Behat (BDD для PHP) в контексте Symfony2. Я все собираюсь-собираюсь попробовать, но никак не соберусь )).

Вторая статья “Fully isolated tests in Symfony2” тоже затрагивает тему тестирования. Идея заключается в том, что при каждом setup’е теста в памяти разворачивается чистая БД и в неё подтягиваются нужные фикстуры. Процессы удаления/создания БД, очистки кеша и загрузки фикстур запускаются при помощи команд консоли Symfony2:

  public function setUp()
  {
    $kernel = new \AppKernel("test", true);
    $kernel->boot();
    $this->_application = new \Symfony\Bundle\FrameworkBundle\Console\Application($kernel);
    $this->_application->setAutoExit(false);
    $this->runConsole("doctrine:schema:drop", array("--force" => true));
    $this->runConsole("doctrine:schema:create");
    $this->runConsole("cache:warmup");
    $this->runConsole("doctrine:fixtures:load", array("--fixtures" => __DIR__ . "/../DataFixtures"));
  }
 
  protected function runConsole($command, Array $options = array())
  {
    $options["-e"] = "test";
    $options["-q"] = null;
    $options = array_merge($options, array('command' => $command));
    return $this->_application->run(new \Symfony\Component\Console\Input\ArrayInput($options));
  }

Это интересно в качестве примера для использования в собственных проектах.
Что же касается самих тестов, то такой подход требует больше ресурсов и времени чем тот, который используется в LiipFunctionalTestBundle. Поэтому я отдаю предпочтение последнему.

Не стоит на месте и написание документации — в поваренной книге появились следующие статьи:

На этом все. Ловлю себя на мысли что интересных материалов было намного больше, но я забывал сохранять ссылки ((. Если у вас есть что добавить, тогда пишите в комментариях или твитьте на @stfalcon. Спасибо за внимание ;).

4 thoughts on “Третий дайджест материалов по Symfony2

  1. “Вторая статья “Fully isolated tests in Symfony2” тоже затрагивает тему тестирования. Идея заключается в том, что при каждом setup’е теста в памяти разворачивается чистая БД и в неё подтягиваются нужные фикстуры.”

    Даже не представляю как без этого можно тестировать 🙂 Кстати, очень советую юзать SQLite memory, тесты бегают как горные козлики по килиманджаро.

      • Пока нет. Но чувствую вскоре придется по частям переводить на него наш проект. В плане веба, симфони2 вряд ли нам что-то упростит, никаких особых фич там и нет, а вот в плане background tasks, логгеров и прочего, может нехило помочь.
        Так что посмотрю, может заюзаю их компоненты.

        Насчет мемори это нужно, да. Так тесты у меня 5 минут ходили, теперь секунд 30. Но там есть нюансы совместимости MySQL и SQLite.

        • “Так тесты у меня 5 минут ходили, теперь секунд 30.” — ты перед каждым тестом пересоздавал БД? в LiipFunctionalTestBundle таблицы просто очищаются. у меня около 40 секунд тесты идут.

Leave a Reply

Your email address will not be published. Required fields are marked *