PHP , class inside class , bug?


PHP , class inside class , bug?

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"或某事:)