-1

yahooデータソースから情報を取得するためのクラスを作成しようとしています。Yahooは、次のデータマップを非常にうまく提供しました。

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

プロパティの名前を参照してコードを表示できるクラスを作成したいと思います。これを達成するための適切な方法は何ですか?

データモデルクラス内にパブリック関数を作成し、その中に連想配列を作成することを考えていました。これはベストプラクティスですか?私はC++構造体に相当するPHPを探していると思います。

ありがとう!

4

2 に答える 2

1

構造体に最も近いものは php オブジェクトです。

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

オブジェクトを使用して、いくつかのメンバー変数を作成するだけです。

大量のメンバー変数が必要ない場合は、1 つのメンバー変数 (配列) を作成し、魔法のメソッド __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;
    }
}
于 2012-11-23T15:52:30.373 に答える
0

私の意見では、量に関係なく、クラス定数は依然としてより良い方法です。

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

ただし、多くの定数を宣言したくない場合、または単純にアクセス方法を改善したい場合は、静的変数を配列で使用できます。

static はクラス変数であり、すべてのオブジェクトでその値をコピーしないことにより、メモリの消費が少なくなり、アクセスが高速になります。

class MyClass {
    static $enum = array(
        'AfterHoursChangeRealtime' => 'c8',
        'AnnualizedGain' => 'g3'
    );
    //[...]
}
于 2012-11-23T16:04:49.337 に答える