classloader — PHP фатальная ошибка: класс не найден

У меня очень странная проблема. В одном классе «SMSNotifier» у меня есть

require_once (__DIR__ . "/../InvitationNotifier.php");
[...]
class SMSNotifier extends InvitationNotifier {
[...]
}

этот класс включен в другой скрипт, который вызывается из cli. При вызове этого скрипта я получаю

PHP Fatal error:  Class 'InvitationNotifier' not found in [...]/include/classi/notifiche/notifiers/SMSNotifier.php on line 12

Странно то, что если я заменяю require_once на требуемое, я получаю вместо

PHP Fatal error:  Cannot redeclare class InvitationNotifier in [...]/include/classi/notifiche/InvitationNotifier.php on line 11

В чем может быть проблема здесь?

Заранее спасибо за любую мысль. Я выбежал из них …

3

Решение

Я продолжал пытаться понять проблему, и я обнаружил, что была круговая зависимость. Я «вырубил» и проблема исчезла. Надеюсь, что это может помочь кому-то

3

Другие решения

Вам следует не просто загружайте файлы, как в 1990 году. Используйте Композитор (PHP) и следуйте PSR-4 http://www.php-fig.org/psr/psr-4

composer.json

{
"autoload": {
"psr-4": {"InvitationNotifier\\": "lib/"}
}
}

index.php

require_once('autoload.php');
1