PHP,如何一次定义许多属性?

时间:2012-11-23 15:48:05

标签: php oop

我希望创建一个从雅虎数据源中提取信息的类。雅虎很好地提供了以下数据地图:

http://code.google.com/p/yahoo-finance-managed/wiki/enumQuoteProperty

我想创建一个类,允许我引用属性的名称并显示代码。完成此任务的适当方法是什么?

我在想在我的数据模型类中创建一个公共函数,并在其中创建一个关联数组。这是最佳做法吗?我想我正在寻找与C ++结构相当的PHP。

谢谢!

2 个答案:

答案 0 :(得分:1)

你最接近结构的是php对象。

http://www.php.net/manual/en/language.types.object.php

使用对象只创建一些成员变量。

如果您不想要大量的成员变量,只需创建一个成员变量(数组)并使用魔术方法__get($ k)和__set($ k,$ v)。

class foo {
    protected $vars = array();

    public function __get($k) {
        if (isset($this->vars[$k]))
            return $this->vars[$k];
    }

    public function __set($k, $v) {
        return $this->vars[$k] = $v;
    }
}

答案 1 :(得分:0)

在我看来,无论数量多少,类常数仍然是更好的方法。

class MyClass {
    const AfterHoursChangeRealtime = 'c8';
    const AnnualizedGain = 'g3';
    //[...]
}

但是,如果你想避免声明很多常量或简单的更好的访问方式,你可以使用带有数组的静态var。

作为static,它是一个类变量,并且通过不在每个对象上复制它的值来消耗更少的内存并且访问速度更快。

class MyClass {
    static $enum = array(
        'AfterHoursChangeRealtime' => 'c8',
        'AnnualizedGain' => 'g3'
    );
    //[...]
}