首页 > 解决方案 > 在 CakePHP 4 中导入外部类时遇到问题

问题描述

我正在使用 PHP 7、CakePHP 4、JQuery 和 JQGrid 4.4.0 从 PHP 5 和 CakePHP 2 升级 WebApplication。

在旧版本中是一个名为 text 的控制器,它导入一个第三方 PHP 文件,其中包含一个类:

App::import('Vendor', 'XLSXParse', array('file' => 'xlsx-parse.php'));

该文件位于“vendors”文件夹中(不是“vendor”),因为它是蛋糕的 config.php 文件中定义的默认路由,并且无法使用 composer 下载该文件(而且它也没有自己的 composer.json)。此外,该文件包含一个名为 XLSXParse 的类。

根据https://book.cakephp.org/4/en/core-libraries/app.html,对于新版本的控制器,我无法使用该import功能。另外,我必须修改 composer.json 文件或手动包含 php 文件,但没有一个工作。

我使用 Eclipse 编辑了 composer.json。文件的自动加载部分结果如下:

"autoload" : {
    "psr-4" : {
        "App\\" : "src/",
        "Ext\\" : "vendors/src"
    }
},
"autoload-dev" : {
    "psr-4" : {
        "App\\Test\\" : "tests/",
        "Cake\\Test\\" : "vendor/cakephp/cakephp/tests/",
        "Ext\\" : "vendors/src"
    }
}

当然,我在供应商中创建了 src fder。

此外,复制并修改了 xlsx-parse.php 文件,进行了以下更改:

  1. 该文件被重命名为 XLSXParse,因为它与文件中的类同名。
  2. 在文件中定义了命名空间 Ext\XLSX
  3. 该文件已复制到文件夹 vendor/src/XLSX

之后,我执行了命令composer dump-autoload -o以使 composer.json 中的更改生效。

但是,当我使用关键字 use ( ) 添加新类时use Ext\XLSX\XLSXParse;,Eclipse 告诉我无法解决使用问题。此外,新类也无法识别。

此外,我尝试使用关键字 require 来手动包含文件。尽管正确定义了路径,但 Eclipse 仍然无法识别新类。

我错过了什么还是我做错了什么?

提前致谢。

''编辑''

我尝试使用 composer (simplexlsx) 添加另一个外部类。虽然课程添加成功,但我的应用程序仍然无法识别它。更重要的是,当我尝试按照 nmm 的建议运行应用程序时,我收到以下错误消息:Class "App/Controller/SimpleXLSX not found"。

我尝试在其他页面中寻找解决方案,但由于 App::import 方法,所有页面都假定 CakePHP 3 或更低版本。

标签: phpcakephpcomposer-php

解决方案


推荐阅读