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致命错误:未捕获错误:找不到类

为啥我收到 PHP 致命错误:未捕获的错误:找不到类“MyClass”? [复制]

PHP 致命错误:找不到类 - PHPUnit

PHP 致命错误:在中找不到类“RemoteWebElement”

PHP memcached 致命错误:找不到类“Memcache”

致命错误:找不到类“Modelmyaccount”