2

まず、タイトルで申し訳ありませんが、どのように名前を付けるべきか見当がつきませんでした。

私がそのように持っているとしましょう:

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

たとえば、これはWelcomeを出力します。

しかし、私が欲しいのはこれです:

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

ご想像のとおり、これはWelcomeも出力するはずです。

つまり、同じ結果が必要ですが、インスタンスに引数を渡す必要はありません。

私は長い間検索しましたが、どうすればそれができるかわかりませんでした。

4

2 に答える 2

2

__get マジック メソッドを探しているようですね。

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"
于 2013-08-10T20:52:19.513 に答える
1

PHPでは、動的アクセスは次の{}とおりです。

$key = 'Willkommen';
$lang->{$key};
于 2013-08-10T20:49:30.540 に答える