Класс объявлен, но еще не существует

У меня есть несколько файлов в одной папке:

test.php:

function __autoload($class_name) {
include $class_name . '.php';
}
$b = new B();
echo 'done' . PHP_EOL;

A.php:

echo 'include A' . PHP_EOL;
abstract class A {
function __construct() {
}
}
require_once ('A.php');
require_once ('B.php');
require_once ('C.php');

echo 'A exists - ' . (class_exists('A') ? 'yes' : 'no') . PHP_EOL;
echo 'B exists - ' . (class_exists('B') ? 'yes' : 'no') . PHP_EOL;
echo 'C exists - ' . (class_exists('C') ? 'yes' : 'no') . PHP_EOL;

B.php:

echo 'include B' . PHP_EOL;
final class B extends A {
}

C.php

echo 'include C' . PHP_EOL;
final class C extends A {
}

Результат, если я запускаю test.php:

include B
include A
include C
A exists - yes
B exists - no
C exists - yes
done

Почему класс B еще не существует?

Это потому, что внутри кода объявления?

Это легко исправить, просто добавив include «A.php»; Первая строка в test.php.

0

Решение

Задача ещё не решена.

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

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector