print_menu1, print_menu2 함수 나눈 이유가 뭘까요?
본문
/adm/admin.head.php 보면 관리자 메뉴를 print_menu1, print_menu2 함수 이용해출력하는데,
구조를 보면 이렇게 둘로 나눌 필요가 없어 보이는데, 왜 이런 식으로 처리한 걸까요?
그냥, print_menu() 함수 하나면 해결될 것 같은데... 둘로 나눈 이유가 궁금합니다.
function print_menu1($key, $no='')
{
global $menu;
$str = print_menu2($key, $no);
return $str;
}
function print_menu2($key, $no='')
{
global $menu, $auth_menu, $is_admin, $auth, $g5, $sub_menu;
$str .= "<ul>";
for($i=1; $i<count($menu[$key]); $i++)
{
if ($is_admin != 'super' && (!array_key_exists($menu[$key][$i][0],$auth) || !strstr($auth[$menu[$key][$i][0]], 'r')))
continue;
if (($menu[$key][$i][4] == 1 && $gnb_grp_style == false) || ($menu[$key][$i][4] != 1 && $gnb_grp_style == true)) $gnb_grp_div = 'gnb_grp_div';
else $gnb_grp_div = '';
if ($menu[$key][$i][4] == 1) $gnb_grp_style = 'gnb_grp_style';
else $gnb_grp_style = '';
$current_class = '';
if ($menu[$key][$i][0] == $sub_menu){
$current_class = ' on';
}
$str .= '<li data-menu="'.$menu[$key][$i][0].'"><a href="'.$menu[$key][$i][2].'" class="gnb_2da '.$gnb_grp_style.' '.$gnb_grp_div.$current_class.'">'.$menu[$key][$i][1].'</a></li>';
$auth_menu[$menu[$key][$i][0]] = $menu[$key][$i][1];
}
$str .= "</ul>";
return $str;
}
답변 1
만든사람 마음이라 정확한 이유는 알 수 없습니다만,
보통
꾸준히 업데이트 되는 프로그램을 관리할떄 업데이트를 하는경우 종종 처리하는 방법 중 하나입니다
보통 저런 경우는 버전 업데이트가 되면서 구버전과 신버전의 함수가 바뀌어 호환이 안되는경우
하위버전의 함수를 사용하는 프로그램들을 위해 두가지 함수를 둘 다 남겨두었다가,
또 버전 업데이트가 되면서 새로운 함수가 구 버전의 함수와 변수 및 출력에 문제가 없게 되어 함수를 굳이 두개 쓰지 않아도 되는경우가 생깁니다.
하지만
그런 경우에 이미 사용중인 프로그램들은 구 버전 신버전을 거치면서 print_menu1를 사용하는 프로그램도 있게되고 print_menu2를 사용하는 프로그램도 있다보니
오류를 줄이기 위해 두가지의 함수이름을 남겨두는 경우가 있습니다.
답변을 작성하시기 전에 로그인 해주세요.