gpt4 book ai didi

symfony - 新的 Symfony 3 目录结构是什么?

转载 作者:行者123 更新时间:2023-12-03 05:01:30 25 4
gpt4 key购买 nike

我刚刚使用常规 Composer 命令创建了一个新的 Symfony 2.5 项目:

php composer.phar create-project symfony/framework-standard-edition path/ 2.5.0

终端询问我:

Would you like to use Symfony 3 directory structure?

这个 Symfony 3 目录结构是什么?我以前从未见过它......它是 2.5 以来的新内容吗?

使用它有什么好处?

有什么办法可以复制这个目录结构吗?

最佳答案

我想使用新的 Symfony 3 目录结构,但我没有看到问题?

问题Would you like to use Symfony 3 directory structure?由于造成困惑,在创建新项目时已被删除。您可以使用以下命令强制使用目录结构:

如果您喜欢新的结构,可以添加环境变量SENSIOLABS_ENABLE_NEW_DIRECTORY_STRUCTURE给您.bashrc.bash_profile像这样:

让所有 future 的项目都要求新的结构

# .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 之间的所有更改和Symfony3目录结构。

<小时/>

新的 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在两个目录之间使用:

$ 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
*/

这显示了两个版本中不同的文件。

<小时/>

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目录

新的/var目录包含系统在操作过程中写入数据的文件(类似于类 UNIX 操作系统)。

这也使得添加权限变得更加容易,整个/var目录应该可以被您的网络服务器写入。您可以关注Symfony2 guide for setting permissions (将 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 Upgrade docs here
Symfony 3.0 The Architecture

Symfony 3 的发布日期

从发布过程来看,它看起来很遥远(值得一读):

http://symfony.com/doc/current/contributing/community/releases.html

Updated Symfony release Process
(来源:symfony.com)

关于symfony - 新的 Symfony 3 目录结构是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23993295/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com