2016-10-11 19 views
0

タイトルはちょっと混乱しています。基本的には、私が使用している別のファイル形式にインクルードするあるファイルの変数を防止したいのです。 例:ファイルがインクルード()されているときに変数が使用されないようにする方法

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:あなたはuseを使用する必要がfooアクセスするには

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

File1.php:

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

File2.php

File2.php :

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

名前空間内の関数を呼び出すことができますか? – HittmanA

+0

@HittmanAは私の答えを更新しました。あなたは私が投稿したリンクをもっと読むことができます。 –

+0

ありがとう、これは間違いなく便利です! – HittmanA

関連する問題