Php 动态方法名

Php 动态方法名,php,oop,object,Php,Oop,Object,首先,我为这个标题感到抱歉,但我不知道该如何命名 比如说,我有这样的想法: $lang = new lang; $lang->setLanguage('en'); $string = $lang->get('Willkommen'); 例如,这将输出Welcome 但我想要的是: $lang = new lang; $lang->setLanguage->en $string = $lang->get->Willkommen 正如您所想,这也应该输出欢迎

首先,我为这个标题感到抱歉,但我不知道该如何命名

比如说,我有这样的想法:

$lang = new lang;
$lang->setLanguage('en');
$string = $lang->get('Willkommen');
例如,这将输出Welcome

但我想要的是:

$lang = new lang;
$lang->setLanguage->en
$string = $lang->get->Willkommen
正如您所想,这也应该输出欢迎

换句话说,我希望得到相同的结果,但不必向实例传递参数


我现在搜索了很长时间,但找不到如何做到这一点。

在php中,动态访问是使用
{}

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

听起来你在找那个


对不起,你能再解释一下吗?我将如何在方法中处理此问题?附言:我编辑了我的帖子以使它更清晰。我不明白它是这样的,所以我有可能像
$lang->get->Willkommen
?因为我还有一个“set”方法,它被调用来设置所需的语言。谢谢你的编辑,但我有点困惑。那是什么?我想你误解我了。setLanguage应该设置我想要接收的语言。例如,如果我将其设置为“en”,我希望接收来自“Willkomen”的enflish字符串,即“Welcome”。@Michael根据您刚才告诉我的内容再次编辑。这就是你要找的吗?顺便说一下,像
$lang->setLanguage->en
这样设置语言是不可能的。是的,没错^^^谢谢,我会试试的。给我几分钟:)非常感谢。工作完美。:)给那个人一块饼干:使用一种方法是最简单的解决办法。另一个解决方案将更加复杂,据我所知,将导致比它解决的问题更多的问题。不幸的是,我需要这样做。我需要它用于细枝模板系统;)
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"