Какова новая структура каталогов Symfony 3?
Я только что создал новый проект Symfony 2.5 с обычной командой composer:
php composer.phar create-project symfony/framework-standard-edition path/ 2.5.0
терминал спрашивает меня:
вы хотите использовать структуру каталогов Symfony 3?
что это структура каталогов Symfony 3? Я никогда не видел его раньше... Это новое с 2.5?
каковы преимущества его использования?
есть ли способ реплицировать эту структуру каталогов?
2 ответа:
я хочу использовать новую структуру каталогов Symfony 3, но я не вижу вопроса?
вопрос
Would you like to use Symfony 3 directory structure?
был удален при создании нового проекта из-за путаницы, которую он вызвал. Вы можете принудительно использовать структуру каталогов, используя следующее:если вы предпочитаете новую структуру, вы можете добавить переменную среды
SENSIOLABS_ENABLE_NEW_DIRECTORY_STRUCTURE
на.bashrc
или.bash_profile
вот так:сделайте все будущие проекты попросить новое структура
# .bash_profile # ALL new composer installs will ask `Would you like to use the new Symfony3 strucure?` export SENSIOLABS_ENABLE_NEW_DIRECTORY_STRUCTURE=true
пусть только этот проект спросит, хотим ли мы использовать новую структуру.
если вы хотели его только для конкретного проекта (Один выкл), вы можете использовать:
SENSIOLABS_ENABLE_NEW_DIRECTORY_STRUCTURE=true composer create-project symfony/framework-standard-edition path/ "2.5.*"
если переменная среды
SENSIOLABS_ENABLE_NEW_DIRECTORY_STRUCTURE
устанавливается и устанавливается вtrue
,composer
спросит, если вы хотите использовать новую структуру каталогов.продолжить чтение ниже для всех изменений между
Symfony2
и структура.
какова новая структура каталогов Symfony 3?
(и как это влияет на меня и мой рабочий процесс)
я изучил это, создав 2 проекта, Один с
symfony-2.5.0
структура каталогов, сsymfony-3
(только изменение структуры каталогов).сделать один из каждого проекта:
# say `N` to `Would you like to use Symfony 3 directory structure?` $ composer create-project symfony/framework-standard-edition symfony-2.5.0/ 2.5.0 # say `Y` to `Would you like to use Symfony 3 directory structure?` $ composer create-project symfony/framework-standard-edition symfony-3/ 2.5.0
Итак, теперь у нас есть 2 разных каталога, которые мы хотим сравнить.
найти
diff
малаявы можете
diff
между 2 каталогами с помощью:$ diff -rq symfony-2.5.0/ symfony-3/ /** (Returned from the diff) Files symfony-2.5.0/.gitignore and symfony-3/.gitignore differ Files symfony-2.5.0/.travis.yml and symfony-3/.travis.yml differ Only in symfony-2.5.0/app: bootstrap.php.cache Only in symfony-2.5.0/app: cache Only in symfony-2.5.0/app: console Only in symfony-2.5.0/app: logs Only in symfony-2.5.0/app: phpunit.xml.dist Only in symfony-3/bin: console Only in symfony-3/bin: symfony_requirements Files symfony-2.5.0/composer.json and symfony-3/composer.json differ Only in symfony-3/: phpunit.xml.dist Only in symfony-3/: var Files symfony-2.5.0/vendor/autoload.php and symfony-3/vendor/autoload.php differ Files symfony-2.5.0/vendor/composer/autoload_real.php and symfony-3/vendor/composer/autoload_real.php differ Files symfony-2.5.0/web/app.php and symfony-3/web/app.php differ Files symfony-2.5.0/web/app_dev.php and symfony-3/web/app_dev.php differ */
это показывает файлы, которые отличаются в 2 версиях.
распад
diff
вот разбивка всего в diff.
# These files still exist in both versions (with different content) .gitignore .travis.yml composer.json vendor/autoload.php vendor/composer/autoload_real.php web/app.php web/app_dev.php # The following files have been removed from 2.5.0 # {RemovedFile2.5} | {ReplacedWith3.0} app/cache | var/cache app/logs | var/log app/bootstrap.php.cache | var/bootstrap.php.cache app/console | bin/console app/phpunit.xml.dist | phpunit.xml.dist # The following files are new in 3.0 bin/symfony_requirements # run via CLI
преимущества структуры каталогов Symfony 3
новая структура каталогов имеет ряд преимуществ, все из которых незначительны и могут потребовать минимальных изменений к вашему рабочему процессу.
PHPUnit
phpunit
можно запустить из корневого каталога проекта без явного указания пути к файлу конфигурации.# Symfony2 phpunit -c app/phpunit.xml # Symfony3 (no need to specify the configuration file location) phpunit
Двоичные Исполняемые Файлы
все двоичные исполняемые файлы теперь все находится в одном месте - на
bin
каталог (похоже на unix-подобную ОС).# you can update your `PATH` to include the `bin` directory PATH="./bin:$PATH" # From your project root you can now run executables like so: console symfony_requirements doctrine # else with no `PATH` update bin/console bin/symfony_requirements bin/doctrine
новая
/var
каталогновая содержит файлы, в которые система записывает данные в процессе своей работы (похоже на unix-подобную ОС).
это также упрощает добавление разрешений, весь
/var
каталог должен быть доступен для записи на вашем веб-сервере. Вы можете следить за Symfony2 руководство по настройке разрешений (подставляяapp/cache
&&app/logs
Сvar
), любые другие файлы, которые вы хотите написать локально также могут быть расположены здесь.# default symfony3 `var` directory var/bootstrap.php.cache var/cache var/logs
проверка требований Symfony
под управлением
symfony_requirements
выведет обязательные и дополнительные конфигурации среды.
например:******************************** * 'Symfony requirements check' * ******************************** * Configuration file used by PHP: /usr/local/php5/lib/php.ini /** ATTENTION ** * The PHP CLI can use a different php.ini file * than the one used with your web server. * To be on the safe side, please also launch the requirements check * from your web server using the web/config.php script. */ ** Mandatory requirements ** ' OK PHP version must be at least 5.3.3 (5.5.11 installed) OK PHP version must not be 5.3.16 as Symfony wont work properly with it OK Vendor libraries must be installed OK var/cache/ directory must be writable OK var/logs/ directory must be writable OK date.timezone setting must be set OK Configured default timezone "Europe/London" must be supported by your installation of PHP OK json_encode() must be available OK session_start() must be available OK ctype_alpha() must be available OK token_get_all() must be available OK simplexml_import_dom() must be available OK APC version must be at least 3.1.13 when using PHP 5.4 OK detect_unicode must be disabled in php.ini OK xdebug.show_exception_trace must be disabled in php.ini OK xdebug.scream must be disabled in php.ini OK PCRE extension must be available ' ** Optional recommendations ** ' OK xdebug.max_nesting_level should be above 100 in php.ini OK Requirements file should be up-to-date OK You should use at least PHP 5.3.4 due to PHP bug #52083 in earlier versions OK When using annotations you should have at least PHP 5.3.8 due to PHP bug #55156 OK You should not use PHP 5.4.0 due to the PHP bug #61453 OK When using the logout handler from the Symfony Security Component, you should have at least PHP 5.4.11 due to PHP bug #63379 (as a workaround, you can also set invalidate_session to false in the security logout handler configuration) OK You should use PHP 5.3.18+ or PHP 5.4.8+ to always get nice error messages for fatal errors in the development environment due to PHP bug #61767/#60909 OK PCRE extension should be at least version 8.0 (8.34 installed) OK PHP-XML module should be installed OK mb_strlen() should be available OK iconv() should be available OK utf8_decode() should be available OK posix_isatty() should be available OK intl extension should be available OK intl extension should be correctly configured OK intl ICU version should be at least 4+ OK a PHP accelerator should be installed OK short_open_tag should be disabled in php.ini OK magic_quotes_gpc should be disabled in php.ini OK register_globals should be disabled in php.ini OK session.auto_start should be disabled in php.ini OK PDO should be installed OK PDO should have some drivers installed (currently available: mysql, sqlite, dblib, pgsql) '
вывод
похоже, что хорошая очистка от Sensio Labs, все вышеперечисленные изменения имеют смысл, они должны быть легко реализованы при обновлении с
2.5
до3.x
, это, вероятно, будет наименьшей из ваших проблем!читать документы
Symfony 2.x = > 3.0 обновление документов здесь
Symfony 3.0 АрхитектураДата выхода Symfony 3
это выглядит далеко глядя на процесс выпуска (стоит прочитать):
http://symfony.com/doc/current/contributing/community/releases.html
вот список изменений между старой и новой структурой каталогов:
- новая . Это позволяет пользователям Bash, например, добавить это к их
.profile
file:# set PATH so it includes current bin folder PATH="./bin:$PATH"
теперь вам даже не нужно вводить
bin/console
, простоconsole
будет достаточно (обратите внимание, что мне пришлось перезагрузиться, чтобы это работа.)есть и другие улучшения.
app/check.php
теперь исполняемый файл, так что вы можете вызвать его с помощьюbin/symfony_requirements
вместоphp app/check.php
. (Используя.profile
трюк, который я описал ранее, простоsymfony_requirements
хватит, а)и, наконец, что не менее важно, вам больше не нужно указывать расположение файла конфигурации при запуске PHPUnit. Так что вместо
phpunit -c app
вы можете просто выполнитьphpunit
.могу ли я обновить существующие проекты до этого нового структура тоже?
по умолчанию вы получите только вопрос "Хотите ли вы использовать новую структуру каталогов" при создании нового проекта (используя
composer create-project symfony/framework-standard-edition path/ "2.5.*"
).тем не менее, можно обновить существующее приложение Symfony, но это несколько хаки решение. Мне удалось сделать это с целым рядом приложений, и вы можете прочитать шаги в этом суть. Однако, поскольку он не предназначен для этого, я не могу гарантировать, что это будет всегда работа.
обновление
оказывается, что Symfony больше не спрашивает вас, Хотите ли вы использовать новую структуру каталогов при создании нового приложения Symfony через Composer. Однако по-прежнему можно создавать проекты Symfony с новой структурой каталогов, используя переменную среды. Дополнительные сведения см. В разделе как я могу создать новый проект на Symfony с новой структурой каталогов?