Как я могу создать новый проект Symfony с новой структурой каталогов?

До недавнего времени было возможно создать новый проект Symfony с новым (Symfony 3) структурой каталогов. При запуске composer create-project symfony/framework-standard-edition path/ "2.5.*", Composer задаст следующий вопрос:

Вы хотите использовать структуру каталогов Symfony 3? [Y/N]

Новая структура предложила некоторые улучшения, такие как console перемещается из каталога app в каталог bin, а phpunit.xml.dist перемещается из каталога app в корневой каталог. Каталоги кэша и журналов были перенесены в новый каталог var.

Посмотрите этот ответ (написанный мной) для получения полного списка изменений.

Однако новая установка стандартного дистрибутива больше не предлагает эту опцию. Похоже, вопрос был удален 16 июля, потому что новая структура каталогов создала слишком много путаницы, особенно для новых пользователей. См. эту проблему на GitHub.

Можно ли создать проект с использованием новой структуры каталогов?

Ответ 1

По-прежнему можно задать вопрос и преобразовать проект в новую структуру каталогов. (но только если вы создаете новый проект, т.е. запустив composer create-project)

Для этого вам нужно установить переменную среды SENSIOLABS_ENABLE_NEW_DIRECTORY_STRUCTURE в true. Это можно сделать, добавив SENSIOLABS_ENABLE_NEW_DIRECTORY_STRUCTURE=true в команду Composer.

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

SENSIOLABS_ENABLE_NEW_DIRECTORY_STRUCTURE=true composer create-project symfony/framework-standard-edition path/ "2.5.*"

и Composer спросит вас, хотите ли вы создать новую структуру каталогов.

Update

Как отмечал Barius в комментариях, эта функция была удалена из Symfony Standard Edition для версии 2.7.5. Если вы действительно хотите использовать структуру Symfony 3, вы можете получить ее, установив Symfony в 2 этапа:

  • Создайте новый проект Symfony с ограничениями версии, чтобы получить версию 2.6, которая все еще спрашивает вас, хотите ли вы использовать новую структуру каталогов.
  • Затем измените ограничение версии для пакета symfony/symfony, чтобы вы все равно получили последнюю версию.

Итак, выполните из командной строки следующие команды:

SENSIOLABS_ENABLE_NEW_DIRECTORY_STRUCTURE=true composer create-project symfony/framework-standard-edition project-directory/ "2.6.*"
cd project-directory
composer require symfony/symfony ^2.7

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

Ответ 2

чтобы создать новую структуру каталогов symfony3 в symfony2 ( >= 2.5), вы должны сделать следующее:

откройте командную строку командной оболочки и запустите команду follwoing для установки временной переменной :

Linux:

export SENSIOLABS_ENABLE_NEW_DIRECTORY_STRUCTURE=true

окна:

set SENSIOLABS_ENABLE_NEW_DIRECTORY_STRUCTURE=true

версия 2.5 и 2.6

вопрос о создании новой структуры каталогов symfony3 задается из коробки после установки переменной среды

версия 2.7 и 2.8

для создания новой структуры каталогов из любой версии 2.7 и 2.8 необходимы следующие шаги:

установите требуемую версию 2.7 и выше (протестировано с 2.7 и 2.8), которая в настоящее время устанавливает 2.7.7

composer create-project symfony/framework-standard-edition myproject "2.7.*"

затем отредактируйте composer.json и добавьте update-directory-structure:

composer.json:

--- snip ---
"scripts": {
    "post-install-cmd": [
        "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters",
        "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
        "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
        "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
        "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile",
        "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::prepareDeploymentTarget"
    ],
    "post-update-cmd": [
        "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters",
        "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
        "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
        "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
        "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile",
        "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::prepareDeploymentTarget"
    ],
    "update-directory-structure": [
        "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::defineDirectoryStructure"
    ]
},
--- snip ---

после этого просто запустите

composer run-script update-directory-structure

ответьте "y", и вы закончите:

> Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::defineDirectoryStructure
Would you like to use Symfony 3 directory structure? [y/N]

Файл console, который теперь находится в bin/console, должен быть адаптирован:

изменить

$loader = require __DIR__.'/autoload.php';

к

$loader = require __DIR__.'/../app/autoload.php';

затем добавьте следующие методы в класс AppKernel в файле app/appKernel.php:

public function getRootDir()
{
    return __DIR__;
}

public function getCacheDir()
{
    return dirname(__DIR__).'/var/cache/'.$this->getEnvironment();
}

public function getLogDir()
{
    return dirname(__DIR__).'/var/logs';
}

update: добавить статью о миграции в новую структуру каталога

кредиты: @davil

Ответ 3

Версия Symfony3 BETA1 теперь выпущена,

Таким образом, вы можете напрямую использовать composer, чтобы установить новую версию symfony3.

Следуйте Установка Composer сначала, если у вас его еще нет.

Затем откройте терминал и введите следующую команду:

composer create-project symfony/framework-standard-edition symfony3 "v3.0.0-BETA1"

Примечание: здесь symfony3 - это название проекта или каталога, который будет создан, вы можете изменить это.

Update: Symfony 3.0 является стабильной и текущей версией, поэтому ее можно напрямую установить, как указано в Официальное руководство. Следуйте за ним для установки последней версии.

composer create-project symfony/framework-standard-edition my_project_name

Вы можете проверить эти ссылки,

Что представляет собой новая структура каталогов Symfony 3?

Готовы ли ваши любимые пакеты для # Symfony3?, отправленные @FecaBouffe