Symfonyob娱乐下载 4.2的新功能:重要的弃用

哈维尔·埃吉鲁兹的化身
谢谢大家的意见。关于“——env”和“——no-debug”的争议性弃用,我只是重新编写了最初的解释。

正如Ryan所说,这在实践中并不是什么大问题。你要么有"。env”文件正确配置(在本地和远程计算机中),或者在远程计算机中已经定义了“APP_ENV”环境变量。

只有当您想要覆盖中设置的值时,才需要处理这些env变量。env”或“APP_ENV”变量,这是一个非常罕见的用例。
Andreas Leathley的化身
@Jeroen van den Broek:在一个应用程序中有多个环境的许多用例。例如,我在一个应用程序中有两个网站,因为他们共享几乎所有的数据,但在不同的域和不同的布局。这是1。另一种可能是有一个管理环境(在admin.website.com上完全不同的管理网站)和一个用户环境(针对客户,在website.com上)。这些环境的优点是可以分离部分,这样就不必包括路由、包、服务或其他不希望在环境中使用或公开的东西,无论是出于性能或安全原因(甚至是分离关注点)。与此同时,您仍然可以大量重用服务和逻辑,而不必一直完全切换代码基。有些人可能只使用“dev”或“prod”,但在一个应用程序中,我使用了13个具有不同安全设置和域的环境,这工作得非常好。

如果你想在你的应用程序中做cache:clear, cache:warmup或类似的额外的事情,总是指定一个环境是有意义的,只是为了确保你没有使用一个未知的默认环境。因为如果碰巧有人突然改变了环境变量所有的脚本都可能以不同的方式工作。
Andreas Leathley的化身
@Javier Eguiluz:对我来说,拥有多个环境似乎是一个可能的用例,如果你只是有一个复杂的应用程序,这种情况并不罕见。也许我是错的,但是有没有关于人们如何使用环境,或者他们使用了多少环境的数据呢?因为我不会默认假设所有人都只使用“开发”、“测试”和“刺激”环境——对于许多项目来说,情况可能非常不同。

也许这也是需要在某些调查中询问Symfony用户的问题。ob娱乐下载我注意到,Symfony在其建议中已经被ob娱乐下载强烈地转换为更简单,比如不使用捆绑包,或者在这种情况下不使用许多环境,基本上只对一个应用程序使用“一个”生产环境。但这可能并不能反映人们是如何使用Symfony的。ob娱乐下载
犹斯丁的化身
我在一个在跳转服务器上运行的CLI应用程序中使用环境。基本上是' bin/console——env=prod app:cache:clear '来清除所有生产应用服务器上的缓存。这是一个Symob娱乐下载fony应用程序,它向管理用户和开发人员公开某些任务,而不需要他们了解底层基础设施。

不过,现在我想想。我想我不应该使用“——env”选项。我必须实现一个自定义选项/参数。
杰夫·威的化身
我个人认为推动使用环境变量是一个糟糕的决定。到目前为止,我还没有从中感受到任何好处,这对我的项目来说是一个巨大的头痛。

例如,当Symfony与nginx一起使用时,如ob娱乐下载果应用程序参数包含一个美元符号,那么你就有麻烦了。Nginx没有提供在fastcgi_param指令中转义美元符号的方法。您可以只在生产中使用dotenv,但这会影响性能。由于这个问题的性质,在将应用程序部署到prodd之前,您很可能不会发现这个问题。

环境变量在不同的shell和服务器中处理方式不同。转向它们意味着从一个在任何地方都一样的自定义系统转向一个根据其所在位置而工作的不同系统。文档并没有真正提欧宝官网下载app到这些——这是有道理的。环境变量有太多的间接转义/引用边缘情况,需要尝试记录,而且大多数情况下它们不是Symfony特定的问题。ob娱乐下载但在使用Symfony时仍然可能遇到这些问题。ob娱乐下载对于用户来说,这是一个很好的小雷区。
朱利安的化身
https://github.com/ob娱乐下载symfony/symfony/pull/28653#issuecomment-432811985

弃用——env和——no-debug实际上是一个糟糕的决定,它会使在Windows上的使用更加复杂。这是一个很糟糕的DX。

' ' '
PHP bin/console——env=dev
ob娱乐下载Symfony 3.4.12 (kernel: src, env: dev, debug: true)
(symfony控制台完全工作ob娱乐下载,没有错误)
' ' '

vs

' ' '
APP_ENV=dev php bin\控制台
'APP_ENV'不能被识别为内部或外部命令,
可操作的程序或批处理文件。
' ' '

vs

' ' '
λ cmd /V /C "set APP_ENV=dev&& php bin\console"
[警告]某些命令无法注册:
php第76行:
没有找到环境变量:DATABASE_URL_LEGACY。
ob娱乐下载Symfony 3.4.12 (kernel: src, env: dev, debug: true)
——剪断
php第76行:
环境变量未找到:“APP_SECRET”。
' ' '

此外,Windows上的自动补全和Linux上的点击补全功能也随之消失。环境变量很酷,但不是万能的。在命令上使用标志是有原因的。想象一下你必须像这样调用所有命令:

URL=http://example.com递归=true OUTPUT_FILE=foo.html wget

请回复这个。
\结束github公关评论

这太痛苦了,没有真正的收获。我经常把软件比作房子,对于房子来说,你必须决定你是想要一个平屋顶还是一个坡屋顶,但对于软件来说,你可以两者兼得。为什么要删除一个方便的功能?
维诺可乐的化身
ob娱乐下载Symfony在环境变量方面有太多的Docker导向。这使得托管多个应用程序的服务器更难配置。

我现在担心启动后台进程因为字符串构造函数已弃用。我们现在该如何发起这样的命令呢?

> new Process('nohup very long-command &');
朱利安的化身
打开一个关于控制台弃用的问题:https://github.com/symfony/symfony/issues/28984ob娱乐下载
纪尧姆·路易埃的化身
@Vinorcola我不认为Docker对Symfony的进化负有责任,当涉及到配置时,这方面总是与12因素原则联系在一起,在我看来,Sob娱乐下载ymfony只是处于与其他解决方案结合是一个好主意的时期,可以改善开发人员的生活。

如果你看看一个现代的托管解决方案,env方法是更容易和自然的方式,当涉及到一个旧的解决方案,vhost env变量方法可以是一个解决方案(不是每个项目肯定)。

如果从配置方面来看,只有Symfony > 3.4支持env变量,所以它没有链接到99%的实际应用程序(这ob娱乐下载些应用程序大多在< 3.4中运行)
多米尼克·韦伯的化身
在向Process组件传递数组时,如何使用准备好的命令(https://symfonyob娱乐下载.com/blog/new-in-symfony-4-1-prepared-commands) ?还是说这已经过时了?
paweowr Niedzielski的化身
@Andreas:“在一个应用程序中有多个环境的很多用例”

然后使用不同的入口点。创建特定于环境的控制台和index.php文件。这真的没什么大不了的。
克里斯·香农的化身
@Vinorcola:你可以明确使用字符串。

>新进程([' sh ', ' c ', ' nohup very-long-command & '])
Ismael Ambrosi的化身
模板目录弃用是否也适用于PHP模板引擎?还是只给小树枝?
史蒂文·英格利的化身
如果使用PHP模板引擎,模板仍然必须存储在src/Resources/views/中,否则就无法找到它们。

评论截止。

为了确保评论保持相关性,旧帖子将被关闭。