Cách sử dụng của getingleton () và getModel ()


7

Có một bộ hướng dẫn mà tôi có thể đi qua để quyết định khi nào tôi nên sử dụng

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

Từ những gì tôi có thể nói, có vẻ như getSingleton có được một thể hiện của một mô hình / lớp hoặc, chỉ khi nó không tồn tại, sẽ tạo ra một thể hiện mới. Trong khi đó getModel () tạo một cái bất kể cái gì đã tồn tại. Điều này có đúng không?

Giả sử tôi có sự hiểu biết chính xác về những điều này, sẽ không có nghĩa gì khi luôn sử dụng mage :: getSingleton ()! Nó rõ ràng không hoặc nếu không getModel () sẽ không được sử dụng. Vậy khi nào tôi nên sử dụng từng cái?

Lợi ích chính của việc sử dụng chính xác là gì? Nó nên cải thiện hiệu suất, giúp tránh trùng lặp hoặc chỉ thường áp dụng thực tiễn tốt nhất?


Câu trả lời:


15

Có, getSingleton trả về cùng một thể hiện, vì vậy bạn không muốn sử dụng nó luôn, nhưng chỉ khi bạn có thể sống với cùng một thể hiện.

Ví dụ về thời điểm KHÔNG sử dụng singleton:

$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();

Điều này tạo ra hai sản phẩm. Nhưng nếu bạn đã sử dụng Singleton, chỉ có một sản phẩm sẽ được tạo, sản phẩm thứ hai sẽ ghi đè lên sản phẩm đầu tiên.

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.