2013-11-26 3 views
0

Может кто-нибудь объяснить следующее, кажется мне ошибкой.Присвоение разрешения класса с «орудиями»

<?php 

class A implements JsonSerializable { 
    public function jsonSerialize() { return []; } 
} 

new A(); 
new B(); 
new C(); 

class B {} 
class C implements JsonSerializable { 
    public function jsonSerialize() { return []; } 
} 

Имеет следующий результат

$ php test.php 

Fatal error: Class 'C' not found in test2.php on line 9 
+0

новый B(); вызывается перед классом B и, очевидно, не находит –

+0

Определите класс перед его вызовом? Если двигатель не заставляет его нормально работать, это, безусловно, лучший дизайн. – LuckySpoon

+0

Да, я сам разрешил свой вопрос - в документации говорится: «Классы должны быть определены до создания экземпляра (и в некоторых случаях это требование)». Проблема, которую я обнаружил, заключалась в том, что я удалил оператор выполнения, с которым он работал, называя его, прежде чем определять его => в некоторых случаях его требуемую часть документов. –

ответ

0

Это довольно легко, переместить экземпляр после определения класса. PHP не находит класс B в строке 8.

0

Классы должны быть определены до создания экземпляра (а в некоторых случаях это требование).

При использовании инвентаря это требование - следовательно, оно работает без инструкции по исполнению.

Смежные вопросы