Чудно́е в PHP
На работе сейчас с любопытным багом в ПХП разбирались. Разобрались, вот выжимка:
interface I {}
var_dump(class_exists('cI')); // false
var_dump(class_exists('C')); // true
class cI implements I {}
class C {}
var_dump(class_exists('cI')); // true
var_dump(class_exists('C')); // true
Выходит, если класс реализует интерфейс, то его не существует выше строки, где он декларируется, класс без реализации интерфейса виден в любом месте. Версия ПХП — 5.5.11. Я для интереса попробовал на 5.6а1 (есть под рукой собранный) — работает так же.
Интересно, что и HHVM (3.1) ведёт себя так же. «Эмулируют» ПХП-шные баги для совместимости.
Занятно. Есть такой же баг про трейты: https://bugs.php.net/bug.php?id=67114
Комментарий для Алек:
И там же есть ответ:
Вся правда о ПЫХе:
lurkmore.to/PHP