2016-10-11 5 views
0

제목이 다소 혼란 스럽습니다. 기본적으로 나는 하나의 파일에서 다른 파일 형식으로 포함시키는 변수를 사용하지 못하도록하고 싶다. 예 :파일이 include() 일 때 변수가 사용되는 것을 방지하는 방법

File1.php :

<?php 
$foo = "Bar"; 
?> 

File2.php :

<?php 
include("File1.php"); 
echo $foo; 
?> 

File2.php 분명 "바"메아리 상기 예에서, 그러나 File1.php 내의 모든 함수에 액세스 할 수있는 동안이 문제가 발생하지 않도록하고 싶습니다. 이상적으로 함수 밖에서 선언 된 변수는 파일이 포함될 때 액세스 할 수 없어야합니다.

+1

'unset ($ foo); '하지만 실제로 이것은 잘못된 코드 구조를 비명 지릅니다. – nogad

+0

불행히도이 유형의 코드 구조를 사용하는 것 외에 다른 선택의 여지가 없습니다. – HittmanA

+0

@nogd 정답입니다. 게시 해주십시오. –

답변

2

사용 PHP namespaces :

File1.php :

<?php 
namespace baz { 
    function foo() { 
     return "Bar"; 
    } 
} 
namespace { // global code 
    $x = "XXX"; 
} 
?> 

File2.php :

File2.php :

<?php 
include("File1.php"); 
echo $x; // outputs XXX 
echo foo(); // Undefined 
?> 

당신이 use를 사용할 필요가 foo에 액세스하려면 :

<?php 
include("File1.php"); 
use function baz\foo; 
echo foo(); // outputs Bar 
?> 
+0

네임 스페이스의 함수를 여전히 호출 할 수 있습니까 (네임 스페이스를 사용하는 것이 처음입니까?)? – HittmanA

+0

@HittmanA가 내 대답을 업데이트했습니다. 내가 게시 한 링크에 대해 더 많은 내용을 읽을 수 있습니다. –

+0

감사합니다. 이것은 확실히 유용합니다! – HittmanA