Производный класс, определенный позже в том же файле, «не существует»?

Предположим, у нас есть два php-файла, a.php и b.php. Вот содержимое файла a.php:

<?php // content of a.php
class A {
}

А вот и содержимое файла b.php

<?php  // content of b.php
include dirname(__FILE__) . "/a.php";
echo "A: ", class_exists("A") ? "exists" : "doesn’t exist", "\n";
echo "B: ", class_exists("B") ? "exists" : "doesn’t exist", "\n";
echo "BA (before): ", class_exists("BA") ? "exists" : "doesn’t exist", "\n";
echo "BB: ", class_exists("BB") ? "exists" : "doesn’t exist", "\n";
class B {
}
class BA extends A {
}
class BB extends B {
}
echo "BA (after): ", class_exists("BA") ? "exists" : "doesn’t exist", "\n";

Если вы запустите скрипт b.php, у вас будет такой вывод:

A: exists
B: exists
BA (before): doesn’t exist
BB: exists
BA (after): exists

Почему класс BA существует только после определения класса? И почему другие классы существуют еще до их определения? Какая разница? Я ожидаю, что в обоих случаях поведение будет одинаковым ... Есть ли способ, которым я мог бы использовать класс BA еще до его определения?

Спасибо

Michele

Ответы на вопрос(2)

Ваш ответ на вопрос