首页 > 解决方案 > 我想在一个类中读取一个函数

问题描述

我不理解附加的内容。(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 ,但没有消息。关于生成的日志,同上。exitCORE.php

chmod644 上。

我不知道如何解决这个问题。任何帮助将不胜感激。

标签: php

解决方案


您正在尝试加载不存在的内容,请回显路径: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 获得了加载类或接口的最后机会,以免它因错误而失败。


推荐阅读