How to solve this error: Declaration error in Phalcon

How to solve this error: Declaration error in Phalcon

当我运行用Phalcon做一个简单的项目时,没问题。但是我要去 运行 另一个人写的另一个 Phalcon 项目,但我得到一个错误:致命错误:Core\Config::toArray() 的声明必须与 Phalcon\Config 兼容: :toArray(): C:\xampp\htdocs\phalcon\phalcon\apps\Core\Config.php

中的数组

找了很多都没有解决这个问题

Core\Config代码:

class Config extends \Phalcon\Config
{
    public function toArray()
    {
        $configArray = parent::toArray();
        unset($configArray['index']);
        return $configArray;
    }
}

Phalcon\Config代码:

class Loader
{
    /**
     * Load config from file extension dynamical
     *
     * @param string $filePath
     *
     * @return Config
     * @throws Exception
     */
    public static function load($filePath)
    {
        if (!is_file($filePath)) {
            throw new Exception('Config file not found');
        }

        $extension = strtolower(
            pathinfo(
                $filePath,
                PATHINFO_EXTENSION
            )
        );

        switch ($extension) {
            case 'ini':
                return new Ini($filePath);

            case 'json':
                return new Json($filePath);

            case 'php':
            case 'php5':
            case 'inc':
                return new Php($filePath);

            case 'yml':
            case 'yaml':
                return new Yaml($filePath);

            default:
                throw new Exception(
                    'Config adapter for .'  . $extension . ' files is not support'
                );
        }
    }
}

您的问题仅部分与 Phalcon 有关。错误本身直接是 PHP 的子错误。 https://3v4l.org/F8EfM

class Something {
  public function toArray(): array
  {
     return [];
  }
}

class SomethingElse extends Something {
  public function toArray()
  {
    return [];
  }
}

实际上,父 class 定义了一个 return 类型提示,但子没有。这些被认为是不相容的。为了修复它,子 class 必须与父具有相同的声明。 https://3v4l.org/b3BGR

class SomethingElse extends Something {
  public function toArray(): array
  {
    return [];
  }
}

现在,也就是说,我确实提到它仅 partially 适用于 Phalcon。核心错误是 PHP,但根本原因是您的 Phalcon 版本与代码库相比。也就是说,正在运行的项目没有这样的问题,或者它使用了与代码相关的正确版本的 Phalcon。失败的项目可能是基于比您安装的旧版本的 Phalcon 构建的。使用 Return 类型提示是一种较新的范例。为了 'fix' 这个问题,你有两个选择。首先是升级代码以与较新版本的 Phalcon 兼容(只需将 Core\Config::toArray 编辑为 : array)。但是,由于必须解决所有此类问题,这很快就会成为一个独立的项目。第二个选项是降级你安装的 Phalcon 版本以匹配它最初构建的版本。不幸的是,我无法确定它最初构建的版本。也有可能您可能需要降级 PHP 版本,但我并不肯定。

旁注:这种情况是我个人不再使用 XAMPP 而是通过 Rancher Desktop 使用 Docker 图片的原因之一。这样我就可以直接在image中显式设置Phalcon&PHP的版本