【发布时间】: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 是在类定义之外和任何函数之外。我没明白你的意思,如果你能详细说明一下
标签: php classloader require require-once