аргументы — я пытаюсь выполнить упражнение PHP, но не могу понять, что происходит

Прежде всего, я очень сожалею о своем неуместном названии вопроса, поскольку я не знал, как написать это лучше.

Начнем с того, что я новичок в PHP. Я решаю какое-то упражнение по PHP, и у меня возник вопрос, с которого я не знаю, с чего начать:

function q3() {
// I am supposed to write stuff here and not change anything to get the question right.
}
function a3($admin = false) {
assertion_group("Question 3");

foreach ($GLOBALS as $k => $v) $$k = $v;
if ($admin) {
$file = q3("edsi.pem");
}
$key = @file_get_contents($file);
$key = substr($key, 0, 4);
assert($key == substr(file_get_contents(__FILE__), 0, 4));

return $key;
}

Прежде всего, я понимаю, что $GLOBALS делает, но зачем назначать $$k в $v (таким образом, значение $ k к значению $ v)? И делает $GLOBALS получить значения внутри функций?

Как я могу установить $admin = true? Я верю через q3()но я не вижу как …

Следующая вещь, которая смущает меня самый является: $file = q3("edsi.pem"). Так как моя функция q3 не имеет аргументов, и я не должен ее добавлять, как я могу ее использовать ?!

Заранее всем большое спасибо за ваш ответ. Снова извиняюсь за очень расплывчатый вопрос …

РЕДАКТИРОВАТЬ:

С помощью @mario, чтобы лучше понять весь этот беспорядок, в основном я должен был написать в q3:

if ($info == 'edsi.pem') {
$info = __FILE__;
return $info;
}

плюс добавить аргумент для q3 (q3($info)) и добавить ?admin=true в шапке …

Большое спасибо еще раз!

0

Решение

Прежде всего, я понимаю, что делает $ GLOBALS, но зачем присваивать $$ k для $ v (поэтому значение $ k равно значению $ v)? И $ GLOBALS получает значения внутри функций?

Что это foreach … $$k = $v; сниппет в основном extract($GLOBALS);

Это не очень полезный способ передачи аргументов. Использование глобальных переменных имеет смысл, только если они имеют несколько описательных имен, и если они не используются как флаги состояния между различными разделами кода.

И нет, глобальные функции доступны не во всех функциях сразу. Следить за публикациями переменная область.

Как я могу установить $ admin = true? Я верю через q3 (), но я не вижу, как …

Вы путаете имена функций здесь (именно потому, что они не являются достаточно полезными именами функций для начала). Вы можете передать параметр $ admin при вызове a3() вместо:

a3(true);

Больше всего меня смущает следующее: $ file = q3 («edsi.pem»). Так как моя функция q3 не имеет аргументов, и я не должен ее добавлять, как я могу ее использовать ?!

Единственный способ получить аргумент в q3 за func_get_arg().

И снова действительно, если это не упражнение о том, как не для написания кода или учебника о странных случаях использования вам не стоит беспокоиться дальше.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]