Đó là phương pháp tốt nhất để có được bộ sưu tập trong magento 2


7

Tôi đang tạo một mô-đun tùy chỉnh. đó là phương pháp ưa thích để có được bộ sưu tập. tôi cần biết ưu điểm và nhược điểm của phương pháp này?

đối tượng quản lý

$objectManager = \Magento\Framework\App\ObjectManager::getInstance(); 
$productCollection = $objectManager->create('Magento\Catalog\Model\ResourceModel\Product\Collection');
$productCollection->load();

Nhà máy

protected $_productCollectionFactory;

    public function __construct(
        \Magento\Catalog\Model\ResourceModel\Product\CollectionFactory $productCollectionFactory,
        array $data = []
    ) {
        $this->_productCollectionFactory = $productCollectionFactory;
        parent::__construct($data);
    }



    public function getProductCollection()
    {
        /** @var $collection \Magento\Catalog\Model\ResourceModel\Product\Collection */
        $collection = $this->_productCollectionFactory->create();
        return $collection;
    }

Câu trả lời:


14

bạn nên sử dụng phương pháp tiếp cận nhà máy.
Ưu điểm là: bạn có thể quyết định tại một thời điểm để thêm một số hành vi phổ biến khi lấy một bộ sưu tập nhất định. Nếu nhà máy được tự động tạo, bạn chỉ cần tạo lớp nhà máy và thêm hành vi trong mã của mình. Bằng cách này, nhà máy của bạn sẽ được sử dụng thay vì lớp tự phát.
Nó tương tự như sử dụng getNamephương pháp thay vì getData('name').

Ưu điểm của việc sử dụng trình quản lý đối tượng là bạn phải viết ít mã hơn, nhưng điều này không làm cho nó đúng.


7

Các nhà máy là các đối tượng đặc biệt chỉ có một mục đích: để tạo một thể hiện của một lớp hoặc giao diện không thể tiêm.

Xem thêm chi tiết trong tài liệu chính thức


2

Sử dụng phương pháp Con Contortor tiêm, phương pháp thứ hai ..

Phương pháp xuất xưởng là cách thực hành tốt nhất để có được Bộ sưu tập, vì vậy hãy sử dụng Phương thức xuất xưởng.

Tuy nhiên, tại một số nơi ObjectManager có trong tay khi trình xây dựng Con constructor không hoạt động cho Bộ sưu tập (tức là: Các lớp quan sát viên) ..

Phần còn lại được giải thích trong liên kết magento chính thức của KAndy.


3
"vì tiêm Con Contor không hoạt động cho Bộ sưu tập (ví dụ: các lớp Người quan sát)" - ý bạn là gì? Thế còn \Magento\Framework\Event\ObserverFactory?
nevvermind

2

Sử dụng Phương thức nhà máy là cách tốt nhất để sử dụng thay vì đối tượng trong magento 2.

Trong hệ thống lõi magento 2, Được sử dụng nhiều nhất là các phương thức Factory thay vì objectmanager.

Bạn có thể sử dụng khái niệm objectmanager trong khi chơi với tập lệnh gốc hoặc bạn chưa tạo bất kỳ khối nào cho tệp mẫu. bạn có thể gọi trực tiếp objectmanager.

Nhưng Factorymethod là cách thích hợp để sử dụng trong hệ thống magento 2.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.