जवाबों:
Magento सख्ती से सीधे ObjectManager के उपयोग को हतोत्साहित करता है। यह सेवा वर्ग प्रदान करता है जो इसे सभी परिदृश्यों के लिए अलग करता है।
सभी गैर-इंजेक्शन (मॉडल) के लिए आपको कारखाने का उपयोग करना होगा:
संरक्षित $ pageFactory;
सार्वजनिक समारोह
{
$ यह-> पेजफैक्टी = $ पेजफैक्टिंग;
}
सार्वजनिक समारोह someFunc ()
{
...
$ पेज = $ यह-> पेजफैक्टरी-> बनाएं ();
...
}
आपको बस इतना करना है कि कंस्ट्रक्टर में वांछित मॉडल का कारखाना पूछना है। जब आप Magento या कंपाइलर चलाते हैं तो यह अपने आप जेनरेट हो जाएगा।
आप इसे इस तरह से कर सकते हैं:
$model = $this->_objectManager->create('Full\Model\Class\Name\Here');
लेकिन आपको यह सुनिश्चित करना होगा कि _objectManagerसदस्य मौजूद है।
अधिकांश वर्गों में यह होना चाहिए, लेकिन अगर यह इसे निर्माता में इंजेक्ट नहीं करता है। ऐशे ही:
protected $_objectManager;
public function __construct(
...,
\Magento\Framework\ObjectManager $objectManager,
....
){
....
$this->_objectManager= $objectManager;
....
}
[एक साल बाद संपादित करें]
भले ही उत्तर ऊपर काम करता हो, यह सबसे अच्छा अभ्यास नहीं है। इसे करने के सही तरीके के लिए एंटोन का जवाब देखें।
तकनीकी तौर पर अगर आपके पास इसका उदाहरण है तो \Magento\Framework\ObjectManagerआप कॉल कर सकते createहैं getऔर इससे आपको मनचाही वस्तु मिल जाएगी। लेकिन यह वास्तव में इस बात पर निर्भर करता है कि आप इसका उपयोग कहां करना चाहते हैं क्योंकि मैगेंटो 2 कंस्ट्रक्टर के माध्यम से निर्भरता इंजेक्शन की ओर जाता है ।