특정 파일만 include 하는 함수 입니다. NULL이 나오는데 좀 봐주실 수 있을까요?
본문
루트의 특정파일만 include 하는 함수를 만들었습니다.
<?php
function getDefaultMenu(){
$menu_file = array();
$tmp = dir(G5_PATH);
while ($entry = $tmp->read()) {
// default.menu로 시작하는 php 파일만 include 함
if (preg_match("/(^default.menu(.*).*\.php)$/i", $entry))
$menu_file[] = $entry;
}
if(!empty($menu_file) && is_array($menu_file)) {
natsort($menu_file);
foreach($menu_file as $file) {
include_once(G5_PATH.'/'.$file);
}
unset($file);
}
unset($menu_file);
}
?>
default.menu로 시작하는 파일을 include 하는 파일인데
include된 default.menu100.php 내용은 다름과 같구요.
<?php
$default_menu['default_menu100'] = array(
array('100000', '회사소개', G5_URL . '/intro.php'),
array('100100', '회사소개', G5_URL . '/intro.php'),
array('100200', '회사연역', G5_URL . '/histroy.php'),
array('100300', '오시는길', G5_URL . '/map.php')
);
?>
그래서 다른 별도의 페이지에서
함수를 호출하여 출력을 했습니다.
getDefaultMenu();
var_dump($default_menu);
//var_dump(get_included_files());
맨 아래에 get_include_files()로 확인해 include 된것은 확인했습니다.
그런데 var_dump()로 $default_menu를 출력하니 NULL아네요
그리고 위의 함수를 실행안 하고 그냥 코드를 실행하면
변수의 값은 잘 나옵니다.
함수로 변경하는데 있어서 오류사항이 있는 걸까요?
!-->!-->!-->답변 3
함수 안에서 include하는 건 결국
함수 안에 있다는 거고
함수 안에 있는 변수는
함수 밖에서 사용할 수 없습니다
echo $tmp; 해서..
G5_PATH 값이 잘 불러오는지 확인하세요.
함수로 만들때 변수가 안불러오는 경우가 있습니다.
그럼 global 로 외부 변수를 선언해줘야 합니다.
애초에 지금 코드가 무의미합니다.
$default_menu는 단순 메뉴를 할당하는 배열에 불과하고
결국 getDefaultMenu() 함수에서
root경로의 default.menu.XXX.php 파일을 불러오는데
해당 함수에서는
실제로 $default_menu 변수는 사용되지않습니다.
답변을 작성하시기 전에 로그인 해주세요.