Мне любопытно, как это работает функция PHP extract? Я хотел бы сделать слегка измененную версию. Я хочу, чтобы моя функция, чтобы имена переменных при извлечении из ключей массива из змеиного обозначения для верблюжьего например:Как extract() создает переменные в текущей области?
Теперь экстракт делает это:
$array = ['foo_bar' => 'baz'];
extract($array);
// $foo_bar = 'baz';
То, что я хотел бы это:
camelExtract($array);
// $fooBar = 'baz';
Теперь я мог бы, конечно, сначала установить массив camelCase, но было бы неплохо, если бы это можно было сделать в одной функции.
редактировать:
Кажется, что некоторые люди неправильно мой вопрос. Да, я мог бы сделать это:
function camelExtract($array)
{
$array = ['foo_bar' => 'baz'];
$camelCased = [];
foreach($array as $key => $val)
{
$camelCased[camelcase($key)] = $val;
}
extract($camelCased);
// $fooBar = 'baz';
// I can't "return" the extracted variables here
// .. now $fooBar is only available in this scope
}
camelExtract($array);
// Not here
Но, как я уже сказал, то $ FOOBAR видна только в пределах этой области.
Думаю, я мог бы что-то сделать как extract(camelCaseArray($array));
, и это сработает.
Так сделайте свою собственную функцию, чтобы сделать это –
Да , но как я могу «магически» создавать переменные в текущей области действия, подобные этой функции? – Matthijn
его не магия, его код –