用docker搭建php服务器时,发现yii2核心类Object报错了。此时用的php版本是当前最新版的7.2

Fatal error: Cannot use 'Object' as class name as it is reserved in /var/www/yii/vendor/yiisoft/yii2/base/Object.php on line 77

出错原因

Object是php7.2中的保留类名,不可以再定义名称为Object的类了。

The object name was previously soft-reserved in PHP 7.0. This is now hard-reserved, prohibiting it from being used as a class, trait, or interface name.

解决方法

  • php版本降级(缓兵之计) 经过测试,php7.2之前的版本都没有问题。这也与php官方文档的说明一致:从7.0版本开始软性保留,从7.2版本开始硬性保留。
  • 更改Yii2核心类Object为其他名称(权宜之计)
  • 等待Yii修复bug(长久之计) 今天发现新版本v2.0.15.1中已经修复这个bug了。

使用最新版本的yii即可

参考文章