我正在开发一个 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
合适? - 解决此问题的替代方法是什么?