Symfonyob娱乐下载 4.2的新功能:重要的弃用
警告:这篇文章是关于一个不受支持的Symfony版本。ob娱乐下载有些信息可能已经过时了。阅读最新的Symfony文档ob娱乐下载.
ob娱乐下载Symfony的向后兼容承诺确保项目的顺利升级,因为它禁止在小版本中出现向后兼容性中断。我们没有更改或删除现有的特性,而是将它们标记为已弃用,并在下一个主要Symfony版本中更改它们。ob娱乐下载
的UPGRADE-4.2.md文档详细解释了所有弃用,你也会在Web调试工具栏、分析器和运行测试时看到它们。本文总结了最重要的弃用,以便您可以开始升级您的Symfony 4应用程序。ob娱乐下载
已弃用模板目录
提供的
Yonel Ceruto
在# 28891.
存储应用程序模板src /资源/视图/
现在已弃用。方法中定义的目录中存储它们twig.default_path
配置选项配置/包/ twig.yaml
,即模板/
默认情况下。
弃用内核名称和根目录
的KernelInterface: getName ()
方法和kernel.name
参数已弃用。它们没有替代方案,因为这是一个在Symfony应用程序中不再有意义的概念。ob娱乐下载
如果需要应用程序内核的独特ID,可以使用KernelInterface: getContainerClass ()
方法和kernel.container_class
参数。
类似地,getRootDir ()
方法和kernel.root_dir
参数也已弃用。的替代方法是使用getProjectdir ()
而且kernel.project_dir
方法在Symfony 3.3中引ob娱乐下载入:
1 2 3 4 5 6 7 8 9
# 'root_dir'是内核类的存储位置(默认为src/)# 'project_dir'是项目的主目录服务:_defaults:绑定:#之前$ dataDir:' % kernel.root_dir % / . . / var /数据/ '#后$ dataDir:' % kernel.project_dir % / var /数据/ '
弃用了一些控制台选项
我们删除了这篇博客文章的原始内容,因为相关的更改在Symfony 4.2发布之前就已经恢复了。ob娱乐下载你可以继续使用控制台选项和环境变量:
1 2 3 4 5
#使用选项控制环境和调试行为$PHP bin/console command_name——env=测验——没有调试#使用env变量来控制环境和调试行为$APP_ENV =测验APP_DEBUG=0 php bin/console command_name . sh
弃用ContainerAwareCommand
的ContainerAwareCommand
类已弃用。在过去,它被用于创建从它扩展的命令,因此它们可以直接访问应用程序服务容器。方法中的命令进行扩展命令
类,并在命令构造函数中使用适当的服务注入,如main中所述关于Symfony控制台的文章ob娱乐下载.
提示:使用:命令
实用程序提供的MakerBundle来快速生成命令,并遵循Symfony的建议。ob娱乐下载
弃用基础控制器
类
基地控制器
类是可选的类,你的控制器可以从中扩展来访问一些有用的快捷方法(比如我们$ this - >渲染()
).这控制器
类已被弃用,而支持AbstractController
.
新AbstractController
基类具有相同的快捷方式,但它对服务的限制更大。您不能使用$ this - > get ()
获取服务的快捷方式。您必须遵循在控制器构造函数或控制器动作中注入服务的现代实践。
提示:使用:控制器
实用程序提供的MakerBundle来快速生成控制器,并遵循Symfony的建议。ob娱乐下载
已弃用的流程命令作为字符串
提供的
尼古拉斯Grekas
在# 27821.
将命令作为字符串传递给过程
类已弃用。另一种方法是传递命令部分的数组(名称,参数,选项):
1 2 3 4 5 6 7
使用ob娱乐下载\组件\过程\过程;/ /之前$过程=新过程(' ls - l ');/ /后$过程=新过程([“ls”,“- l”]);
已弃用的没有根节点的树构建器
这种弃用不会直接影响到大多数开发人员,因为它与依赖注入的配置类有关。但是,由于应用程序中使用的包,您将看到许多这样的弃用消息。
在大多数情况下,修复这个弃用将是很简单的,所以你可以贡献一个修复到你最喜欢的第三方包:
1 2 3 4 5 6 7 8 9 10
使用ob娱乐下载\组件\配置\定义\构建器\TreeBuilder;/ /之前$treeBuilder=新TreeBuilder ();$rootNode=$treeBuilder->根(“acme_root”);$rootNode->...()->...()->...();//后$treeBuilder=新TreeBuilder (“acme_root”);$treeBuilder->getRootNode ()->...()->...()->...();
评论
我得到了web请求的环境变量,就像使用PHP-FPM / FastCGI一样,你可以很容易地设置额外的变量,并且没有“隔离”的命令/ cron作业,也没有命令行选项。但是对于控制台命令和一般的shell命令,我不认为为覆盖选项设置环境变量是其他人遵循的用例,所以对我来说这似乎不是最佳实践。
使用这些方法中的任何一种都意味着您根本不必在命令中包含调试或env重写。
我个人不认为保留——env和——no-debug开关作为那些有用例的人的选项有什么问题,但我认为即使它们最终被删除,我也不会受到任何影响。
但是,大多数情况下,我只在生产中运行命令时使用这些选项,并且我需要——env=prod。但是,在生产环境中,我已经将所有配置(包括APP_ENV)存储为环境变量(作为真正的环境变量或.env文件)。所以,当我运行“php bin/控制台”时,它只会使用我的应用程序的其余部分正在使用的适当环境。
所以,也许这并不是什么大事?我认为重点不应该放在需要在调用命令之前设置env变量这一事实上。相反,您的env vars已经被正确设置,因此您可以不带变量地运行该命令。
干杯!
正如Ryan所说,这在实践中并不是什么大问题。你要么有"。env”文件正确配置(在本地和远程计算机中),或者在远程计算机中已经定义了“APP_ENV”环境变量。
只有当您想要覆盖中设置的值时,才需要处理这些env变量。env”或“APP_ENV”变量,这是一个非常罕见的用例。
这对我来说毫无意义。现在我们需要3个命令(在Windows中)而不是1个。
让我们继续前进!
Javier Eguiluz is a certified Symfony engineer.
Get certified! Online exams available in all countries.
Register Now