2015-05-14 2 views
0

Прежде всего, я очень сожалею о своем нерелевантном вопросе, поскольку я не знал, как лучше писать.Я пытаюсь решить упражнение 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 не имеет никаких аргументов и что я не должен ее добавлять, как я могу ее использовать ?!

Благодарим всех вас за ваш ответ. Мои извинения снова за очень смутный вопрос ...

EDIT:

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

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

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

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

+0

И каков ваш вопрос/проблема сейчас? Кроме того, если вы не можете добавить агрументы в функцию 'q3()', вы не сможете получить значение 'edsi.pem' в своей функции – Rizier123

+0

@ Rizier123: ну, действительно, это звучит очевидно, что мне нужно добавить этот аргумент, иначе я не увижу, как это получить, я думал, что они могли быть каким-то неясным способом, которого я еще не знал! – Phlisg

+0

@mario: там не намного больше контекста, так как каждый вопрос является независимым и не имеет ссылки :( – Phlisg

ответ

1

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

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

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

И нет, глобальные возможности недоступны сразу во всех функциях. Читайте дальше на variable scope.

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

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

a3(true); 

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

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

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

+0

замечательно! Большое спасибо за ваш ответ :) попробуем и оставим отзыв! – Phlisg

Смежные вопросы