php - 我想在一个类中读取一个函数
问题描述
我不理解附加的内容。(php7.x)
[2019 年 4 月 19 日星期五 02:48:49.446162] [proxy_fcgi:error] [pid 2750] [client xxx.xxx.84.89:48694] AH01071: Got error 'PHP message: PHP Fatal error: Uncaught LogicException: Function 'Core\OM在 /var/www/xxxx/xxxx/web8/web/client/index.php:29 中找不到 \CORE::autoload'(找不到类 'Core\OM\CORE')\n堆栈跟踪:\n#0 / var/www/xxxx/xxxx/web8/web/client/index.php(29): spl_autoload_register('ClicShopping\\OM...')\n#1 {main}\n 抛出 /var/www/xxxx /xxxx/web8/web/client/index.php 第 29 行'
索引.php
define('BASE_DIR', __DIR__ . '/shop/includes/Core/');
require(BASE_DIR . 'OM/CORE.php');
spl_autoload_register('Core\OM\CORE::autoload');
这个函数好像有问题:spl_autoload_register
我尝试了不同的东西,它总是给出同样的错误。喜欢,
spl_autoload_register(['\\Core\\OM\\CORE', 'autoload']);
spl_autoload_register('Core\OM\CORE::autoload')
你有类似的问题吗?
开启var_dump(is_file(BASE_DIR . 'OM/CORE.php'));
==>true
我不明白为什么它不想使用自动加载功能并会产生此错误。就像CORE.php
没有读过,也不存在。
我试图在文件的顶部放一个var_dump('test')
and ,但没有消息。关于生成的日志,同上。exit
CORE.php
在chmod
644 上。
我不知道如何解决这个问题。任何帮助将不胜感激。
解决方案
您正在尝试加载不存在的内容,请回显路径:DIR。'/shop/includes/Core/ 到浏览器主体,在此位置您需要 OM/CORE.php,因此它试图获取位于以下位置的 CORE.php 文件: __DIR__ 。'/shop/includes/Core/OM/CORE.php
函数 autoload 的目的是包含 PHP 类文件,所以在你的网站中,当你要启动一个类对象时,首先你需要包含 PHP 类文件。如果e有很多课程怎么办?
许多编写面向对象应用程序的开发人员为每个类定义创建一个 PHP 源文件。最大的烦恼之一是必须在每个脚本的开头写一长串所需的内容(每个类一个)。
在 PHP 5 中,这不再是必需的。spl_autoload_register() 函数注册任意数量的自动加载器,如果当前未定义类和接口,则可以自动加载它们。通过注册自动加载器,PHP 获得了加载类或接口的最后机会,以免它因错误而失败。
推荐阅读
- kubernetes - 主机目录未显示来自 Kubernetes 持久卷声明的文件
- ansible - 如果需要修改或已修改任何内容,则使用更改检测更改 WebSphere 中的 MailSession for HCL Connections
- c++ - 是否可以使用旧 c++ 版本的 c++ 库?
- java - 如果我不在 Java 中使用 Base64 编码,为什么 AES 不起作用?
- ios - 有没有办法在 swift Xcode 中添加一个镜头?
- java - 作为“swtbot test”运行时出现 SWTBot 错误
- phpmyadmin - phpmyadmin 登录错误 1045,需要帮助修复
- javascript - JS/Jest:如何测试条件布尔值?
- python - Python方法移动写入文件
- c# - 使用“动态”通用和匿名对象“新 {}”模拟失败