动态方法名称

时间:2013-08-10 20:46:54

标签: php oop object

首先抱歉标题,但我不知道应该如何命名。

让我说我喜欢它:

$lang = new lang;
$lang->setLanguage('en');
$string = $lang->get('Willkommen');

例如,输出欢迎

但我想要的是:

$lang = new lang;
$lang->setLanguage->en
$string = $lang->get->Willkommen

如你所想,这也应该输出欢迎

顺便说一句,我想要相同的结果,但不必将参数传递给实例。

我现在搜索了很长时间,但却无法知道我该怎么做。

2 个答案:

答案 0 :(得分:2)

听起来你正在寻找__get magic method

class lang {
    var $language = 'en';

    function __get($prop) {
        if ($prop == 'Willkommen') {
            if ($this->language == 'en') return 'Welcome';
            else if ($this->language == 'fr') return 'Bonjour';
        }
    }

    function __set($prop, $val) {
        if ($prop == 'language') $this->language = $val;
    }
}

$lang = new lang();
echo $lang->Willkommen; // Prints "Welcome"
$lang->language = 'fr';
echo $lang->Willkommen; // Prints "Bonjour"

答案 1 :(得分:1)

在php中,动态访问是{}

$key = 'Willkommen';
$lang->{$key};