Функция PHP использует переменную извне

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'); } 

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

Предлагаемое чтение:

  • Область переменных в PHP
  • Анонимные функции

Кроме того, вы можете переносить переменные из внешней области, используя закрытие с ключевым словом use .

 $myVar = "foo"; $myFunction = function($arg1, $arg2) use ($myVar) { return $arg1 . $myVar . $arg2; }; 

Просто введите функцию: global $ site_url;