PHP致命错误:找不到类
Posted
技术标签:
【中文标题】PHP致命错误:找不到类【英文标题】:PHP Fatal error: Class not found 【发布时间】:2015-03-20 09:18:33 【问题描述】:我有一个非常奇怪的问题。在一类“SMSNotifier”中,我有
require_once (__DIR__ . "/../InvitationNotifier.php");
[...]
class SMSNotifier extends InvitationNotifier
[...]
这个类包含在另一个从 cli 调用的脚本中。调用此脚本时,我得到 p>
PHP Fatal error: Class 'InvitationNotifier' not found in [...]/include/classi/notifiche/notifiers/SMSNotifier.php on line 12
奇怪的是,如果我将 require_once 替换为 require,我会得到 p>
PHP Fatal error: Cannot redeclare class InvitationNotifier in [...]/include/classi/notifiche/InvitationNotifier.php on line 11
这可能是什么问题?
提前感谢您的任何想法。我已经用完了它们......
【问题讨论】:
InvitationNotifier.php
中是否有 InvitationNotifier
类?它使用命名空间吗?
是的,有,没有,它不使用命名空间。抽象类 InvitationNotifier 实现 Notifier
当你使用类的绝对路径时会发生什么?
您是否将您的任何需求放入容器中,例如函数或类?我不知道这种情况会如何发展:在一个函数中,你 require_once InvitationNotifier。它被包括在内并且功能结束。现在,在函数之外,您需要再次调用它。它已经是必需的,但类定义包含在函数中,因此当您尝试使用它时它不存在。更改为 require 将在函数中定义类(一个定义)和函数外部(第二个定义 - 错误)。
实际上 require/require_once 是在类定义之外和任何函数之外。我没明白你的意思,如果你能详细说明一下
【参考方案1】:
我一直在尝试理解这个问题,并发现存在循环依赖。我已经“削减”了它,问题就消失了。希望这可以帮助某人
【讨论】:
【参考方案2】:您应该不只是像 1990 年那样加载文件。使用 Composer (PHP) 并遵循 PSR-4 http://www.php-fig.org/psr/psr-4
composer.json
"autoload":
"psr-4": "InvitationNotifier\\": "lib/"
index.php
require_once('autoload.php');
【讨论】:
以上是关于PHP致命错误:找不到类的主要内容,如果未能解决你的问题,请参考以下文章
为啥我收到 PHP 致命错误:未捕获的错误:找不到类“MyClass”? [复制]
PHP 致命错误:在中找不到类“RemoteWebElement”