2011-10-02 11 views
1

私はちょっと混乱しています。オブジェクトプロパティをコンストラクタやファクトリメソッドで設定するのに適切な場所は何ですか?それとも問題ではありませんか?コンストラクタでファクトリまたはコンストラクタ - オブジェクトプロパティを設定する場所は?

:工場で

class Foo { 
    public $bar; 
    function __constructor($b) { 
     $this->bar = $b; 
    } 

    static function factory($b) { 
     return new self($b); 
    } 
} 

class Foo { 
    public $bar;  

    static function factory($b) { 
     $obj = new self(); 
     $obj->bar = $b; 
     return $obj; 
    } 
} 
+1

例のファクトリメソッドとコンストラクタでは、同じことを行います。あなたのコードのためにそれは問題ではありません。 – pltvs

+1

ファクトリーに関する限り、それはカプセル化されているので違いはありません:) – hakre

+0

@JaredFarrish訂正ありがとう! –

答えて

0

質問はあなたがBプロパティを設定せずにクラスをインスタンス化することができています。それが動作する場合は、コンストラクターでプロパティーを設定する必要はありません。他のメソッドが機能するためにプロパティが重要な場合は、コンストラクタでそのプロパティを設定する必要があります。工場はこれとは関係ありません。もし、そのクラスをインスタンス化するための唯一の方法がコンストラクタであるなら(コンストラクタはプライベート)、コードはカプセル化されますが、必要なパラメータをコンストラクタに渡す必要があります。そうしないと、コードをリファクタリングするときに、 。