B.php:
class B
{
function show() { echo 'works'; }
}
A.php
class A
{
public static function defineB()
{
include "b.php";
}
}
A::defineB();
$b = new B;
var_dump($b);
对象(B)#1(0){},
如果没有A :: defineB(); - 致命错误:未找到“B”类, 如果定义类而不包含另一个文件 - 致命错误:类声明可能不是嵌套的,
是bug吗?
答案 0 :(得分:3)
这不是错误,它是默认和正确的行为。
您应该在使用之前包含文件。如果这给您带来太多痛苦,您可以在代码的开头使用http://www.php.net/manual/en/language.oop5.autoload.php或http://www.php.net/manual/en/function.spl-autoload-register.php。
答案 1 :(得分:0)
在PHP中,你不能嵌套类(如在Java中) - 所以你得到“类声明可能没有嵌套”。关键词是名称空间。在类B
的方法中包含类A
不会影响仍然是......“A”而不是“B \ A”,“BA”或某事物的类A
的名称。 :)