Я считаю, что это плохая практика, так как она может привести к ряду переменных, которые будущие сопровождающие (или вы сами через несколько недель) не поймете, откуда они берутся. Рассмотрим этот сценарий:
extract($someArray); // could be $_POST or anything
/* snip a dozen or more lines */
echo $someVariable;
Откуда взялась $someVariable
? Как кто-нибудь может сказать?
Я не вижу проблемы в доступе к переменным из массива, в котором они были начаты, поэтому вам действительно нужно представить хороший пример для , используя extract()
, чтобы я подумал, что оно того стоит Это. Если вы действительно хотите набрать несколько дополнительных символов, просто сделайте это:
$a = $someLongNameOfTheVariableArrayIDidntWantToType;
$a['myVariable'];
Я думаю, что комментарии здесь относительно аспектов безопасности несколько преувеличены. Функция может принимать второй параметр, который фактически дает вам довольно хороший контроль над вновь создаваемыми переменными, в том числе не перезаписывает существующие переменные (EXTR_SKIP
), ТОЛЬКО перезаписывает существующие переменные (так что вы можете создать белый список) (EXTR_IF_EXISTS
), или добавление префиксов к переменным (EXTR_PREFIX_ALL
).