Classe derivada definida posteriormente no mesmo arquivo “não existe”?
Vamos supor que temos dois arquivos php, a.php e b.php Aqui está o conteúdo do arquivo a.php:
<?php // content of a.php
class A {
}
E aqui está o conteúdo do arquivo 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";
Se você iniciar o script b.php, você tem esta saída:
A: exists
B: exists
BA (before): doesn’t exist
BB: exists
BA (after): exists
Por que a classe BA existe somente depois da definição de classe? E por que as outras classes existem mesmo antes de sua definição? Qual é a diferença? Eu esperaria ter um comportamento comum em ambos os casos ... Existe uma maneira que eu poderia usar a classe BA antes mesmo de sua definição?
Obrigado
Michele