首先对这个标题感到抱歉,但我不知道应该如何命名它。
假设我有这样的:
$lang = new lang;
$lang->setLanguage('en');
$string = $lang->get('Willkommen');
例如,这将输出Welcome。
但我想要的是这样的:
$lang = new lang;
$lang->setLanguage->en
$string = $lang->get->Willkommen
正如您所想,这也应该输出欢迎。
换句话说,我想要相同的结果,但不必将参数传递给实例。
我搜索了很长时间,但找不到如何做到这一点。
最佳答案
听起来您正在寻找 __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"
关于php - 动态方法名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18166195/