getsingleton()およびgetModel()の使用


7

いつ使用するかを決定するための一連のガイドラインはありますか

   mage::getModel() and mage::getSingleton()

私が知ることができることから、g​​etSingletonはモデル/クラスの既存のインスタンスを取得するか、存在しない場合にのみ新しいインスタンスを作成するかのようです。一方、getModel()は、既存のものに関係なく作成します。これは正しいです?

これらを正しく理解しているとすれば、常にmage :: getSingleton()を使用するのは意味がありません。明らかに、そうでなければgetModel()は使用されません。それで、それぞれをいつ使うべきですか?

これらを正しく使用する主な利点は何ですか?パフォーマンスを改善するか、重複を避けるのに役立つか、または一般的にベストプラクティスを適用する必要がありますか?


回答:


15

はい、getSingletonは同じインスタンスを返すので、常にそれを使用する必要はありませんが、同じインスタンスを使用して生活できる場合に限ります。

シングルトンを使用しない場合の例:

$product = Mage::getModel('catalog/product');
$product->setSku("asdfasdf");
$product->setName("First Test Product");
$product->save();

$product = Mage::getModel('catalog/product');
$product->setSku("asdfasdf2");
$product->setName("Second Test Product");
$product->save();

これにより2つの製品が作成されます。ただし、シングルトンを使用した場合、1つの製品のみが作成され、2番目の製品が最初の製品を上書きします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.