0

我写了一个这样的类:

class config {
    private $conf;

    public function __call( $confName, $args ){
        if (  0 == count($args) && isset($this->conf[$confName]) ){
            return $this->conf[$confName];
        }
        else {
            $this->conf[$confName] = $args[0];
            return $this;
        }
    }
}

和 $conf = new config();

但是我想在输入 $conf-> 时获得建议列表,

有没有理想或不可能做到这一点?

4

2 回答 2

2

假设 Zend Studio 尊重类 docblock 中的 @method 标记,就像 Eclipse PDT 所做的那样,那么也许这会给你你所追求的。

/**
 * Config class
 * @method mixed aMagicMethod()  a magic method that could return just about anything
 * @method int   anotherMethod() a magic method that should always return an integer
 */
class config { ...
于 2013-06-18T20:43:54.250 回答
0
class config {
    private $conf;

    public function none_existent_method1(){
        // forward the call to __call(__FUNCTION__, ...)
        return call_user_func(array($this, '__call'),
            __FUNCTION__, func_get_args());
    }

    public function none_existent_method2(){
        // forward the call to __call(__FUNCTION__, ...)
        return call_user_func(array($this, '__call'),
            __FUNCTION__, func_get_args());
    }

    public function __call( $func, $args ){
        if (  0 == count($args) && isset($this->conf[$func]) ){
            return $this->conf[$func];
        }
        else {
            $this->conf[$func] = $args[0];
            return $this;
        }
    }
}

只需添加方法并将它们转发给您__call自己。

还有其他方法,但都需要您声明函数。

于 2013-06-18T10:13:08.873 回答