2011-02-23 7 views
0

이 함수를 사용할 때 포함 된 스크립트에 의해 생성 된 변수는이 함수의 범위 내에서 유지됩니다.기본 PHP 문제

function reqscript($script) 
{ 
    $include_dir = 'inc/'; 
    $page_ext = '.php'; 
    include($include_dir.$script.$page_ext); 
} 

다음과 같은 방법을 사용하지 않아도되는 방법이 있습니까?

include(buildfilename('...')); 
+3

그래서 .. 무엇이 문제입니까? –

+0

좋아 보인다! 것을 바꾸지 마십시오! – Doug

+0

정확히 무엇을 묻고 싶습니까? 이슈가 뭐야? –

답변

1

포함 된 파일에 일부 변수를 정의하려면 $GLOBALS을 사용해야합니다.

예컨대 : $foobar = 42;$GLOBALS['foobar'] = 42;

그래서 $foobar은 (함수의 외부) 전역에서 사용할 수 있어야한다.

그러나 나는 buildfilename() 방법을 선호합니다.

+0

+1 나는 OP를 다시 읽을 때까지 적절한'buildfilename()'메소드를 타이핑했다. 또한'buildfilename()'을 사용하여 올바른 위치에 include/require하는 것을 선호합니다. –

0

당신의 대답은 이미 php.net에서 포함 된 파일의 끝 부분에있는 리턴을 사용하십시오.

http://php.net/manual/en/function.include.php

예 # 5 :

return.php

<?php 

$var = 'PHP'; 

return $var; 

?> 

noreturn.php

<?php 

$var = 'PHP'; 

?> 

testreturns.php

,
0

Floem 제안과 같이 buildfilename() 메서드를 사용하기 위해 코드를 채택하는 것이 좋습니다. 그러나 그렇게 할 수 없거나 원하지 않는 경우 전역 네임 스페이스에 변수를 가져 오는 간단한 래퍼가 있습니다.

class Req { 
    public function __construct($src) { 
     include($src); 
     foreach (get_object_vars($this) as $name => $value) { 
      $_GLOBALS[$name] = $value; 
     } 
    } 
} 

function reqscript($script) { 
    $include_dir = 'inc/'; 
    $page_ext = '.php'; 
    new Req($include_dir . $script . $page_ext); 
}