특정 파일만 include 하는 함수 입니다. NULL이 나오는데 좀 봐주실 수 있을까요?

특정 파일만 include 하는 함수 입니다. NULL이 나오는데 좀 봐주실 수 있을까요?

QA

특정 파일만 include 하는 함수 입니다. NULL이 나오는데 좀 봐주실 수 있을까요?

답변 3

본문

루트의 특정파일만 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하는 건 결국

함수 안에 있다는 거고

함수 안에 있는 변수는 

  함수 밖에서 사용할 수 없습니다

함수안에 있어도 include만 하는거라, include만 하면 include된 파일의 변수를 쓸 수 있을 줄 알았는데 생각해보니 안되는게 맞군요. 해당 문제는 함수 안에서 include로 선언된 배열값을 리턴하는 걸로 해결했습니다. 감사합니다.

echo $tmp; 해서..

G5_PATH 값이 잘 불러오는지 확인하세요.

함수로 만들때 변수가 안불러오는 경우가 있습니다.

그럼 global 로 외부 변수를 선언해줘야 합니다.

 

애초에 지금 코드가 무의미합니다.

$default_menu는 단순 메뉴를 할당하는 배열에 불과하고

결국 getDefaultMenu() 함수에서

root경로의 default.menu.XXX.php 파일을 불러오는데

해당 함수에서는

실제로 $default_menu 변수는 사용되지않습니다.

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 131
© SIRSOFT
현재 페이지 제일 처음으로