2011-10-18 26 views
0

外部変数の組み込みに関する助けが必要です。クラスの内部から外部変数を呼び出すことができません

私は、このファイルlang.class.php

class Lang { 
    public $DefaultLang = 'en'; 

    public function __construct() { 
     require_once($_SERVER['DOCUMENT_ROOT'] . "/system/lang/en.php"); 
    } 

    public function MainLang() { 
     return $this->DefaultLang; 
    } 

    public function Translate($String, $Array = "") { 
     if($Array != '') 
      $LangArray = $Array; 

     echo $LangArray[$String]; 
    } 

    public function __destruct() {} 
} 

言語ファイルが__construct()

に含まれている、配列

$LangArray = array(
    "home" => "Home", 
    "news" => "News", 
    "info" => "Info" 
); 

を保持して、このファイルen.phpは、クラスは、このによって呼び出されます。 $Lang->Translate('home')

これは何も返しませんが、私はこれ$Lang->Translate('home', $LangArray)をすれば、それはarray_keyのでhome

から値を返し、どのように私は機能を経由して、それを得ることなく、配列を得ることができますか?

ありがとうございました!

答えて

2

require_*またはinclude_*を使用する場合は、インクルードファイルのコードをインクルードディレクティブの代わりに貼り付けるだけのように考えてください。したがって、そのファイルを含めると、$LangArrayという変数があります。その変数をクラスのプライベートプロパティに代入して使用することができます。

class Lang { 
    private $LangArray; // <- store the array in a private property 

    public function __construct() { 
     require_once($_SERVER['DOCUMENT_ROOT'] . "/system/lang/en.php"); 
     $this->LangArray = $LangArray; // <- assign the loaded array 
    } 

    public function Translate($String) { 
     echo $this->LangArray[$String]; // <- use the loaded array 
    } 
} 
+0

ありがとうございます。 – NoobiCake