使变量表现得像一个函数

时间:2013-09-22 18:12:02

标签: php

我正在制作一个可用于多项式和单项式的PHP脚本(单项式的例子是42xk^2c^3d)。 Monomial类定义如下:

class Monomial {
    public $coefficient; // i.e. 42
    public $letters;     // an array of Letter objects
    public $literal;     // i.e. xk^2c^3d
    /* Code */
}

现在,在我的应用程序中,我使用字母数组和文字变量。每当我更新单项时(例如向其添加内容时)我都不想“手动”更新literal变量:相反,我希望它是动态的,因此访问它会调用函数“建立“它。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

编写一个函数setLetters(甚至updateMonomial),它会更新您的变量并使用它而不是直接访问变量。不暴露班级成员通常是个好主意。

答案 1 :(得分:0)

使用__get方法。一个例子:

class Monomial {
    public $coefficient;
    public $letters;
    public $literal;

    function __get($var) {
        if ($var != "literal") {
            return $this->data[$var];
        } else {
            foreach ($this->letters as $letter) {
                $return.=$letter->literal;
            }
            return $return;
        }
}

__get对象中会有一个类似的Letter方法,可以根据请求生成文字字符串。