php - 在 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 文件,进行了以下更改:
- 该文件被重命名为 XLSXParse,因为它与文件中的类同名。
- 在文件中定义了命名空间 Ext\XLSX
- 该文件已复制到文件夹 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 或更低版本。
解决方案
推荐阅读
- mysql - MYSQL 平均一天统计
- c# - WPF OnStartup 异常
- c# - 反应性条件限制运算符
- r - 如何根据字符串绑定R中的行?
- c++ - 运算符重载;必须是二元运算符(带 3 个参数)
- php - Firefox 量子(版本-68.0.1)上传一个文件然后自动重新加载选项卡并多次上传同一个文件时出现问题
- php - 类中的函数未捕获的错误
- jquery - 如何将此代码的当前 url 链接附加到 COPY THS TEXT?
- flutter - 在 Flutter 应用中支持自定义文件扩展名(在 Flutter 中打开扩展名为 .abc 的文件)
- javascript - 在 Android 运行时访问浏览器的 DOM 内容