У меня есть несколько файлов в одной папке:
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.
Задача ещё не решена.
Других решений пока нет …