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,它是默认且正确的行为。
在使用文件之前,应先包含这些文件。如果这让你太痛苦,你可以使用http://www.php.net/manual/en/language.oop5.autoload.php或http://www.php.net/manual/en/function.spl-autoload-register.php在代码的开头。
在PHP中,你不能嵌套类(就像在Java中一样),所以你得到了"类声明可能不会嵌套"。关键字是命名空间。从类A
的方法中包含类B
不会影响仍然是…的类A
的名称。。。"A"而不是"B''A"、"B.A"或某事:)