ベストプラクティスの質問:別のクラスメソッド内で新しいオブジェクトを作成することについて不適切なことはありますか?私は以下の小さな例を持っています:ベストプラクティス:クラスメソッド内での新しいオブジェクトのインスタンス化
public function export() {
$orders = new Orders($id);
$all_orders = $orders->get_all_orders();
}
ベストプラクティスの質問:別のクラスメソッド内で新しいオブジェクトを作成することについて不適切なことはありますか?私は以下の小さな例を持っています:ベストプラクティス:クラスメソッド内での新しいオブジェクトのインスタンス化
public function export() {
$orders = new Orders($id);
$all_orders = $orders->get_all_orders();
}
あなたが与えた例は完全に受け入れられます。
たとえば、すべてのメソッドで同じオブジェクトをインスタンス化していた場合は、オブジェクトを代わりにプロパティとして格納できます。
例:Ordersオブジェクトはコンストラクタでインスタンス化され、プロパティとして格納されます。
class Something
{
protected $orders;
public function __construct($id)
{
$this->orders = new Orders($id);
}
public function export()
{
// use $this->orders to access the Orders object
$all_orders = $this->orders->get_all_orders();
}
}
私の意見では、コンストラクターで受注オブジェクトを渡す方が良い方法です。それはテストを容易にします。
それはすべて明らかにidがどこか他のオブジェクトを注文するために渡す必要があり、問題の全体像に依存します:あなたは、これは悪いかもしれないと思うのはなぜ
class Something
{
protected $orders;
public function __construct(Order $order)
{
$this->orders = $order;
}
}
http://stackoverflow.com/questions/15901861/why-not-instantiate-a-new-object-inside-object-constructor?rq=1 – LDusan
号? – maialithar
いいえ、おそらくオブジェクト指向プログラミングの基礎について何かを読んでみたいと思うでしょう。実際には、一般的にオブジェクトのクールな機能の1つです。 –