编译错误:无法将Symfony \ Component \ Validator \ Constraints \ True用作True,因为' True'是一个特殊的类名称与PHP 5.6

时间:2017-07-22 16:18:39

标签: php symfony php-7 php-5.6

我已经运行了一个我正在新创建的服务器上工作的应用程序。但是,输入我遇到此错误消息的其中一个页面:编译错误:无法将Symfony \ Component \ Validator \ Constraints \ True用作True,因为' True'是一个特殊的类名。我已经读过这个问题与php 7的symfony版本的使用有关。然后我转移到php 5.6,但出现了相同的错误消息。有人能帮我吗?我怎样才能更新symfony?我尝试过使用作曲家更新和作曲家更新symfony / symfony但是没有工作。

1 个答案:

答案 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

,您可以找到新列表