Язык – это PHP 5.4 на сервере Apache 2.2. Это сценарий, который вызывается ajax.
$usr = new User(); function getMyName(){ echo $usr->username; } getMyName();
По какой-то причине $ name выходит за рамки. Почему это так? Я также попытался напрямую вызвать скрипт с тем же результатом. Я попробовал использовать ($ name) для разрешения, но это, видимо, работает только с анонимными функциями (закрытие)?
Когда я это делаю, это работает, но это смешно:
$usr = new User(); $name = $usr->username; function getMyName($n){ echo $n; } getMyName($name);
$usr = new User(); function getMyName(){ global $usr; echo $usr->username; } getMyName();
альтернативно:
$usr = new User(); function getMyName($usr){ echo $usr->username; } getMyName($usr);
Это не смешно. Вот как должна работать переменная область видимости. Вам нужно передать переменную $ usr в качестве параметра функции, иначе она будет недоступна. Функции были разработаны для ввода и отправки результата / вывода. Вы должны придерживаться своего второго примера, вместо того, чтобы возиться с глобальными …
$usr = new User(); $name = $usr->username; function getMyName($n){ echo $n; } getMyName($name);
Вот цитата из Википедии:
В информатике подпрограмма, называемая также процедурой, функцией, подпрограммой, методом или подпрограммой, является частью исходного кода в более крупной компьютерной программе, которая выполняет определенную задачу и относительно независима от оставшегося кода.