2011-09-20 25 views
0

動的な変数を定義することはできますか、とにかく以下を行うことは可能ですか?クラス内に動的静的変数を作成しますか?

例1:

class base 
{ 
    protected static $$dynamicVar; 

    protected function myFunction($value) 
    { 
     $dynamicVar = $value; 
     self::$$dynamicVar = new $value(); 
    } 
} 

このコードの背後にある考え方は、インスタンス化されるかのオブジェクトを知っ基底クラスなしで、新しいオブジェクトをインスタンス化することです。

新しいオブジェクトをインスタンス化することは動的であることがわかりますが、静的な変数に動的に生成する必要があります。

おかげで、

+0

保護された静的な$$ varはできません。私が必要とするものを説明しようとしています。 – Henrique

+1

誰かがこのような構造が必要な設計パターンを教えてください... –

答えて

2

これは、私の知る限りでは不可能ですが、あなたは常にこのような何かを行うことができます。

class base 
{ 
    protected static $dynProps = array(); 

    protected function myFunction($value) 
    { 
     self::$dynProps[$value] = new $value(); 
    } 
} 

ここでより重要な質問はである「なぜあなたはこれが必要なのです

? "

+0

ありがとう、私はそれを試みます。配列は通常、通常のvarsよりも遅いですが、おそらくうまくいくでしょう。すべてのクラスがこのベースを拡張するシステムを実行すると、このベースはdbクラスのように、すべての子クラスで必要となるベースクラスをほとんどロードしません。私のシステムが2つのクラスの2つの瞬間を持っていて、ベースを拡張してdbを必要とする場合、同じクラスが2回インスタンス化されるのを避けるために、私は試みます。それで、$ dynTempVarがnullでないかどうかをチェックし、そうでなければ、上で述べたようにクラスをインスタンス化し、$ this-> $ dyn = self :: $$ dynTempVarを適用するので、$ thisと一緒に使うことができます – Henrique

+0

As私がこれを行う唯一の方法は、静的な変数を使用することです別の方法でそれができたらどうかありがたいです。 – Henrique

関連する問題