私は 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
適切ですか? - この問題を解決する別の方法は何ですか?