Comments 17
Редчайшая глупость, надеюсь, этот RFC не примут.
Но всё же тот факт, что указание явного неймспейса ускоряет код до 20% почти на пустом месте (за счёт снижения количество опкодов Zend VM) должно сильно подстегнуть разработчиков. Так что, думаю, года через 2-3 можно будет уже начинать думать об этом RFC.
Да какой eval? Достаточно обычного include. Файлы в Zend Engine компилируются независимо друг от друга, никаких заголовочных файлов, как в C, в PHP нет.
P.S. Для корректного резолва этих функций и генерируется нужный трёхадресный код (в нашем случае опкоды Zend VM), который указывает каким образом нужно обратиться к нашей функции. Указание неймспейса явно позволяет собрать эту команду в один единственный опкод с явным вызовом функции без резолва её неймспейса.
Сейчас смотрю, такой крндец…
use function in_array;
И далее в коде не использовать обратные слеши.
use function strlen, strpos, strrev;
Еще как вариант: может стоит сделать «объединяющий» импорт (как, например, в питоне), чтобы не плодить десяток строк?
use functions from zlib;
// можно юзать все функции из http://php.net/manual/en/ref.zlib.php
echo gzencode($_GET['abc']);
А можно объединять импорт через ",":
если это был вопрос — то да, можно:
use function \{strlen, strpos, strrev};
«объединяющий» импорт
как разруливать конфликты имен? Нет уж, пусть лучше будет явным. Тем более что IDE за вас это все проставляют, да и это в целом неплохой способ быстро оценить связанность модулей. Смотрим на начало файла и понимаем от чего он зависит и что юзает.
Увы PHP не JS что бы можно было писать в духе import * as foo from './foo'
.
Deprecation — это же не удаление. Будут сыпаться нотисы. На мой взгляд, полезно. Сам уже давно настроил в PHPStorm автоподстановку слэша.
Придется ведь переписывать код всех существующих библиотек и скриптов!
В RFC включены ссылки на инструменты которые помогут вам это сделать. Так что не вижу проблемы. Более того, если в ветке 7x это не задепрекейтить, в 8-ку это уже никак не запихнуть.
Это что, больше безопасности добавит?
это добавит чуток производительности и сделает управление зависимостями более явным (что добавит в конечном итоге безопасности за счет статического анализа).
daniilgrigorovabi/abimodelpattern — Операция «Ы» и новая библиотека ABI
Зачем ЭТО в дайджесте?
PHP-Дайджест № 125 (29 января – 11 февраля 2018)