Ваш пример кода становится рабочим и запускается благодаря OPCache.
Если очень упростить, то OPCache между компиляцией кода и запуском добавляет этап из оптимизации и кэширования на основе разделяемой памяти, после чего уже расширенный класс (с учетом наследования) может быть получен от туда. В PHP < 5.3 для этого использовалась установка с говорящим названием:
opcache.inherited_hack
Кэш обновляется и обнуляется, в зависимости от настроек инвалидации и выделенного размера под хранения.
При этом каждый раз вы с таким кодом рискуете терять расширенный класс из кэша, тогда вам снова придется вручную добиваться его возврата через изменение файлов (триггер). Поэтому лучше так не делать, а последовать советам из других ответов, заодно учтя заветы PSR.
О работе и внутреннем устройстве OPCache смотрите статью:
PHP's OPCache extension review