Abgeleitete Klasse, die später in derselben Datei definiert wird: "Existiert nicht"?

Nehmen wir an, wir haben zwei PHP-Dateien: a.php und b.php. Der Inhalt der Datei a.php lautet:

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

Und hier ist der Inhalt der Datei 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";

Wenn Sie das Skript b.php starten, erhalten Sie folgende Ausgabe:

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

Warum existiert die BA-Klasse erst nach der Klassendefinition? Und warum existieren die anderen Klassen noch vor ihrer Definition? Was ist der unterschied Ich würde in beiden Fällen ein gemeinsames Verhalten erwarten ... Gibt es eine Möglichkeit, die BA-Klasse bereits vor ihrer Definition zu verwenden?

Vielen Dank

Michele

Antworten auf die Frage(2)

Ihre Antwort auf die Frage