2016-12-16 4 views
0

私はクラス定義の初心者ですので、これは簡単な質問ではないと思います。PHPで複雑なオブジェクトクラスを定義するには

私は私のようなパラメータを介してアクセス対象のデータの収集で終わるしたい:私は次のレベルを(定義されてはどうすればよい

class AllData 
{ 
     public $Discount; 
     public $Claimed; 

} 

で開始

AllData->A->Discount->Amount 
AllData->A->Discount->Percentage 
AllData->A->Claimed->Amount 
AllData->A->Claimed->Percentage 

A、A-> Amount、A-> Percentage、など)を指定しますか?

+0

内部オブジェクトのすべてが同じインターフェイスを拡張し、同じプロパティを持つかどうかを調べる必要があります – RomanPerekhrest

+0

配列を使用しない理由はありますか? – simon

+0

私はそれを記述したので、配列は最も単純なケースで動作しますが、私はそれらを使ってクラスとオブジェクトの理解を広げようとしています。 – user3765165

答えて

2

\ stdClass outをチェックする必要があります。

class AllData 
{ 
    public $Discount; 
    public $Claimed; 

    public function __construct() { 
     $Discount = new \stdClass(); 
     $Discount->Amount = 100; 
     $Discount->Percentage = 300; 
    } 
} 

は今、あなたはこのように割引額にアクセスすることができます:あなたが唯一の属性が含まれているクラスを持っているようですので、これは最速の方法だろう

$object = new AllData(); 
echo $object->Discount->Amount; 

(そうはstdClassはあなたのための罰金です)。

+0

クラス内でstdClassを使用するのはなぜ私には起こりませんか分かりません。 – user3765165

+0

Octavianの反応は正しいですが、次のレベルへ行くにはどうすればいいですか? $ Discount-> Amount-> USAと$ Discount-> Amount-> CDNが必要な場合はどうすれば定義できますか? $ Discount-> Amount = new stdClass()を追加しようとすると、「警告:空の値からデフォルトオブジェクトを作成する」というメッセージが表示されます。 – user3765165

関連する問題