php - 动态方法名

标签 php oop object

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

假设我有这样的:

$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/

相关文章:

C# 抽象类,用于数组初始化

javascript - 从对象键构建字符串

php - 如何在 Laravel 中向数据透视表添加记录

c++ - 引发异常:读取访问冲突。这是对象数组中的nullptr

php MySQL语法错误

oop - Grails Domains OOP 疑虑

c - "object"和指向某种结构的指针之间有区别吗?

java - 使用 Gson 和抽象类

php - 从 MySQL/PHP 中的多个表中删除的正确语法

php - MySQL 大圆距离(半正矢公式)