Я работаю над приложением CodeIgniter.Переменные данные ведут себя странно внутри функции
Часть навигационного меню для моего приложения создается из использования данных сеанса. Поскольку я должен печатать одно и то же в нескольких местах, я написал функцию для печати. Файл, создающий меню, приведен ниже. Функция print_roles_assigned()
используется несколько раз в этом файле.
$roles_assigned = $this->session->userdata('roles_assigned');
function print_roles_assigned() {
$output = '';
if ($roles_assigned)
{
foreach ($roles_assigned as $role) {
$output .= '<li>' . anchor('main/home/'.$role->role_name, $role->rol
e_name) . '</li>';
}
}
else
{
$output .= '<li>No roles have been assigned.</li>';
}
return $output;
}
Приведенный выше код не работает. Из любых вариантов я прибегал к использованию $GLOBAL
. Подобная проблема никогда не случалась со мной раньше, и я не уверен, подходит ли использование $GLOBAL
. Новый код приведен ниже:
$GLOBALS['roles_assigned'] = $this->session->userdata('roles_assigned'); // Change made here
function print_roles_assigned() {
$output = '';
$roles_assigned = $GLOBALS['roles_assigned']; // Using the global variable inside function
if ($roles_assigned)
{
foreach ($roles_assigned as $role) {
$output .= '<li>' . anchor('main/home/'.$role->role_name, $role->rol
e_name) . '</li>';
}
}
else
{
$output .= '<li>No roles have been assigned.</li>';
}
return $output;
}
Я хотел бы знать:
- Почему мой исходный код не срабатывает?
- Возможно использование
$GLOBAL
? - Что может быть альтернативным методом для устранения этой проблемы?
http://php.net/manual/en/language.variables.scope.php – andrewsi
Почему вы не можете использовать '$ this-> session-> UserData ('roles_assigned');' внутри функционировать? –
@ user1612290 Это не сработало. – Aniket