function parts($part) { $structure = 'http://' . $site_url . 'content/'; echo($tructure . $part . '.php'); }
Эта функция использует переменную $site_url
которая была определена в верхней части этой страницы, но эта переменная не передается в функцию.
Как мы можем вернуть его в функцию?
Добавить второй параметр
Вам необходимо передать дополнительный параметр вашей функции:
function parts($site_url, $part) { $structure = 'http://' . $site_url . 'content/'; echo $structure . $part . '.php'; }
В случае закрытия
Если вы предпочитаете использовать закрытие, вы можете импортировать переменную в текущую область (ключевое слово use
):
$parts = function($part) use ($site_url) { $structure = 'http://' . $site_url . 'content/'; echo $structure . $part . '.php'; }
global
– плохая практика
Этот пост часто читается, поэтому что-то нужно уточнить в отношении global
. Использование его считается плохой практикой (см. Это и это ).
Для полноты решения здесь используется решение с использованием global
:
function parts($part) { global $site_url; $structure = 'http://' . $site_url . 'content/'; echo($structure . $part . '.php'); }
Это работает, потому что вы должны сказать интерпретатору, что хотите использовать глобальную переменную, теперь он считает, что это локальная переменная (внутри вашей функции).
Предлагаемое чтение:
Кроме того, вы можете переносить переменные из внешней области, используя закрытие с ключевым словом use
.
$myVar = "foo"; $myFunction = function($arg1, $arg2) use ($myVar) { return $arg1 . $myVar . $arg2; };
Просто введите функцию: global $ site_url;