คำถามติดแท็ก design-patterns

1
คอลเล็กชันมีประวัติใน Magento 2 หรือไม่
ฉันรู้ว่าโค้ดจำนวนมากที่อยู่ใน Magento 2 (2.1.2) ในปัจจุบันมีการย้ายพอร์ตมากขึ้นหรือน้อยลงจาก Magento 1 และโค้ดจำนวนมากจะถูกแทนที่ด้วยสิ่งที่เทียบเท่าในอนาคต ในแง่นี้ฉันสงสัยว่าอนาคตของคอลเลกชันใน Magento 2 คืออะไร ให้ฉันอธิบาย: วีโอไอพี 1: ใน Magento 1 เราเคยได้รับคอลเล็กชันเช่นนี้: $products = Mage::getModel('catalog/product')->getCollection(); จากนั้นเราสามารถใช้ตัวกรองและการดำเนินการอื่น ๆ กับคอลเลกชัน: $products->addAttributeToFilter('price', ['gteq' => 10]); $products->addFieldToFilter('created_at', ['lt' => '2016-10-10']); $products->setPageSize(10); // ... etc ... และสุดท้าย แต่ไม่ท้ายสุดคอลเลคชั่นของเราจะคืนโมเดล: foreach ($products as $product) { echo get_class($product); // Mage_Catalog_Model_Product } …

2
ข้อดีของรูปแบบโรงงาน Magento2 เหนือ Magento 1
Magento 2 กำลังใช้คลาสของโรงงานเพื่อไม่ให้ฉีดยา ตัวอย่างเช่นระดับผลิตภัณฑ์: ProductFactory ตัวอย่างเช่นชั้นลูกค้า:CustomerFactory ฉันไม่เข้าใจรูปแบบของโรงงานที่นี่คืออะไร เพราะสำหรับแต่ละคลาสที่เกี่ยวข้องกับ 1 คลาสจากโรงงาน ฉันคิดว่ามันเป็นสิ่งที่ซ้ำกัน ทำไมเราจึงไม่ควรสร้างโรงงานนามธรรมCustomerFactory, ProductFactoryetc? และตัวอย่างเช่น: เราสามารถส่งผ่านAbstractFactoryสำหรับประเภทการตรวจสอบแทนProductFactoryในการProductRepositoryสร้างคลาส ดังนั้นเราจึงสามารถหลีกเลี่ยงข้อต่อแน่นระหว่างProductRepositoryและProductFactory บทคัดย่อระดับโรงงาน: namespace Magento\Framework\ObjectManager\Code\Generator; /** * Abstract Factory class */ abstract class AbstractFactory { /** * Object Manager instance * * @var \Magento\Framework\ObjectManagerInterface */ protected $_objectManager = null; /** * Instance name to create * …


1
Magento 2: การสร้างออบเจ็กต์ข้อมูลด้วยสถานะที่ไม่เปลี่ยนรูปแบบ?
การถอดความคิดเห็นออกจากMagento 2 อื่น หากคุณต้องการแชร์ค่าที่คำนวณได้ให้วางพฤติกรรมการคำนวณเพื่อแยกวัตถุและเรียกมันจากบล็อกที่ต้องใช้ค่านั้น รีจิสทรีไม่ได้รับการสนับสนุนเนื่องจากเป็นสถานะที่ไม่แน่นอนในระดับโลกและคุณไม่แน่ใจว่าจะได้รับสิ่งใดจากที่นั่น มีวิธีในการสร้าง Object ใน Magento 2 ด้วยสภาพที่ไม่เปลี่ยนรูปแบบหรือไม่? การใช้งานรีจิสตรี ( Magento\Framework\Registry) ไม่ได้รับการสนับสนุนเนื่องจากเป็นสถานะที่ไม่แน่นอนทั่วโลก (สันนิษฐานได้เพราะแม้ว่าregisterวิธีการนี้จะไม่อนุญาตให้คุณเปลี่ยนรหัสที่มีอยู่ แต่คุณสามารถยกเลิกการตั้งค่าและรีเซ็ตคีย์นั้นได้) อย่างไรก็ตาม - ปัญหาเดียวกันนี้มีอยู่สำหรับวัตถุใด ๆ ใน Magento 2 หากฉันต้องการสร้างวัตถุ namespace Pulsestorm\Helloworld\Model; use Magento\Framework\DataObject; class ViewVars extends DataObject { } จากนั้นการสร้างการพึ่งพาการสร้างอัตโนมัติช่วยให้มั่นใจว่าทุกคนสามารถคว้าวัตถุที่ใช้ร่วมกันได้ หากวัตถุนั้นไม่ได้ใช้งานร่วมกันมุมมอง / บล็อกจะไม่สามารถคว้าได้ ในทางทฤษฎีเราสามารถทำอะไรบางอย่างเช่น namespace Pulsestorm\Helloworld\Model; class ViewVars { protected $_data=false; protected function setData($data) …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.