我已经运行了一个我正在新创建的服务器上工作的应用程序。但是,输入我遇到此错误消息的其中一个页面:编译错误:无法将Symfony \ Component \ Validator \ Constraints \ True用作True,因为' True'是一个特殊的类名。我已经读过这个问题与php 7的symfony版本的使用有关。然后我转移到php 5.6,但出现了相同的错误消息。有人能帮我吗?我怎样才能更新symfony?我尝试过使用作曲家更新和作曲家更新symfony / symfony但是没有工作。
答案 0 :(得分:3)
所以这真的取决于你的symfony版本,以及你在composer.json中设置的内容。
如果您使用的是2.7之前的版本,那么PHP7会让您感到悲伤,即使您认为自己已降级为5.6,仍有可能无法正确完成。
在symfony 2.7之后,有问题的类已经改变,以避免PHP7的保留类名(True和False最适合这种情况),而等效类是IsTrue和IsFalse,这些可以从2.7开始提供,但只需要如果在PHP7上。
如果您检查Symfony2.7文档是否为True,您将找到此消息。
注意
从Symfony 2.7开始,不推荐使用True约束 在Symfony 3.0中删除。改为使用IsTrue约束。
在2.7和2.8范围内,您仍然可以找到旧课程和新课程,但旧课程现在会有折旧通知。
我建议您的第一个操作应该是找到您调用这些旧验证约束的位置,可能在您的表单类型中,可能在您的实体中。当你发现它们只是将它们交换为新的IsFalse和IsTrue时你就应该好了。
以下单词不能用于命名类,接口或 特征,它们也被禁止在命名空间中使用。
| | **Reserved Words** | |
|-------------------------- |--------------------: |-------------------- |---------------------- |
| int (as of PHP 7) | float (as of PHP 7) | bool (as of PHP 7) | string (as of PHP 7) |
| true (as of PHP 7) | false (as of PHP 7) | null (as of PHP 7) | void (as of PHP 7.1) |
| iterable (as of PHP 7.1) | | | |
如果保留字http://php.net/manual/en/reserved.other-reserved-words.php
,您可以找到新列表