我正在构建一个用于国际化的语言类,我想动态访问这些属性(给出字符串名称),但是在处理数组时我不知道该怎么做(这只是一个例子):
class Language {
public static $languages_cache = array();
public $index_header_title;
public $index = array(
"header" => array(
"title" => NULL
)
);
}
现在我添加这样的语言:
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
动态访问成员的功能:
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 :(得分:0)
您可以尝试使用分隔符标志,以便可以解析数组路径。唯一的问题是你混合了属性和数组,这可能会使事情变得复杂。
您可以像这样调用您的函数:
echo _('index.header.title', "en");
您的函数将解析路径并返回正确的值。看看Kohana 3.0中的数组助手。它具有您想要的确切功能。 http://kohanaframework.org/guide/api/Arr#path