Есть ли изменения в asserts в PHP7?

Хотел в коде написать проверку:
assert('is_subclass_of($classname, BasicClass::class)', 'Класс быть наследником BasicClass');

Всё бы ничего, но оказалось что assert это как eval, и про текущий нэймспэйс и загруженные классы он ничего не знает. Пришлось написать так:
assert('is_subclass_of($classname, "Name\Space\BasicClass")', 'Класс быть наследником BasicClass');

Приемлемо в общем, но в приступе негодования успел написать репорт на bugs.php.net, где быстро получил "Not a bug" с комментарием про который собственно и возникает вопрос:
If you want to stay in the same context, don't use strings and pass your expression directly. In PHP 7 this will incur no cost if asserts are disabled.
И вот я смотрю на списки изменений в PHP 7 и нигде не вижу, чтобы в ассертах что-либо изменилось. 3v4l.org намекает, что стало лучше, но разброс времени настолько незначителен, по сравнению с разбросом в минорных релизах, что тоже сомнительно. Сам is_subclass_of, наверное, сильно изменился в связи с изменениями во внутренностях, но как функцией был, так и остался, и время на его вызов тратится. Так где же правда?

P.S. Уточняю вопрос: правда ли вызов assert(is_subclass_of(...)) будет бесплатен? И какие изменения в движке к этому привели?
  • Вопрос задан
  • 580 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы