ThinkPHP6.0在PHP8下报错解决方法

最新6.0.6已经支持PHP8.0,建议直接升级ThinkPHP版本!

PHP8下全新安装ThinkPHP6.0.X出现报错,如下

Deprecated: Method ReflectionParameter::getClass() is deprecated in xxxx\vendor\topthink\framework\src\think\Container.php on line 443

解决方法,找到文件

xxxx\vendor\topthink\framework\src\think\Container.php

定位到443、445、446行

443  // $class     = $param->getClass(); // 注释掉该语句
        $reflectionType = $param->getType();// 替换成该语句
       
445  // if ($class) {
446  //     $args[] = $this->getObjectParam($class->getName(), $vars);
     // 注释掉上面445 446语句 改成下面
    
     if ($reflectionType && $reflectionType->isBuiltin() === false) {
         $args[] = $this->getObjectParam($reflectionType->getName(), $vars);

具体Issues查看官方git:https://github.com/top-think/framework/pull/2371

代码变动文件:https://github.com/top-think/framework/commit/df4a07d2f51307a6fabdf75dc5b4b7f8b0ad8af8

QQ截图20201210164727.png

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开微信扫一扫,即可进行扫码打赏哦

分享到
  • QQ好友
  • 微信好友
  • 新浪微博