2011-01-25 8 views
0

私は国際化のためのLanguageクラスを構築していますが、プロパティに動的にアクセスしたいのですが(文字列名を指定します)、配列を扱う際にはどうすればよいか分かりませんこれは)単なる一例である:動的メンバーにアクセスするための配列型のオブジェクトプロパティに動的にアクセスする

Language::$languages_cache["en"] = new Language(); 
Language::$languages_cache["en"]->index_header_title = "Welcome!"; //setting variable 
Language::$languages_cache["en"]->index["header"]["title"] = "Welcome!"; //setting array 

機能:

class Language { 

    public static $languages_cache = array(); 

    public $index_header_title; 

    public $index = array(
     "header" => array(
      "title" => NULL 
     ) 
    ); 
} 

は今、私はこのような言語を追加

function _($member, $lang) 
{ 
    if (!property_exists('Language', $member)) 
     return ""; 

    return Language::$languages_cache[$lang]->$member; 
} 

ので、メンバーを出力:

echo _('index_header_title', "en"); //works 
echo _('index["header"]["title"]', "en"); //does not work 

を、私は、パブリックとプライベート__set経由()関数のために...動的配列にアクセスするための方法が必要になります。
ありがとうございます!

答えて

0

セパレータフラグを使用して、配列パスを解析できます。唯一の問題は、物事を複雑にするようにプロパティと配列を混在させることです。

あなたはこのようなあなたの関数を呼び出します。

echo _('index.header.title', "en"); 

そして、あなたの関数は、パスを解析し、正しい値を返します。 Kohana 3.0の配列ヘルパーを見てみましょう。それはあなたが望む正確な機能を持っています。 http://kohanaframework.org/guide/api/Arr#path

+0

ありがとうございました!そのヘルパーは配列プロパティに動的にアクセスする際の問題を解決しました。 –

関連する問題