PHP, класс внутри класса, ошибка? - PullRequest
0 голосов
/ 03 апреля 2012

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» не найден, если определить класс без включения другого файла. - Неустранимая ошибка: объявления классов не могут быть вложенными,

это ошибка?

Ответы [ 2 ]

3 голосов
/ 03 апреля 2012

Это не ошибка, это поведение по умолчанию и правильное поведение.

Вы должны включить файлы перед их использованием. Если это доставляет вам слишком много боли, вы можете использовать http://www.php.net/manual/en/language.oop5.autoload.php или http://www.php.net/manual/en/function.spl-autoload-register.php в начале вашего кода.

0 голосов
/ 31 июля 2012

В PHP вы не можете вкладывать классы (как в Java) - поэтому вы получили «Объявления классов не могут быть вложенными».Ключевое слово - namespace .Включение класса B из метода класса A не влияет на имя класса A, которое все еще ... "A", а не "B \ A", "BA" или sth.:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...