Magic getters on Varien_Object
(M1) และDataObject
(M2) เป็นเรื่องธรรมดา แต่ด้วย Magento 2 มันรู้สึกผิดที่จะใช้มัน
ดี:
- ง่ายต่อการอ่าน / เขียน
ไม่ดี
- มันทำให้เกิดปัญหาเมื่อใช้ตัวเลขในคีย์ (ดู: วีโอไอพี 2: วิธีที่แตกต่างกันในการรับฟิลด์ของคอลเลกชันหรือรับคุณสมบัติของผลิตภัณฑ์ที่กำหนดเองโดยใช้เคสอูฐ )
- เครื่องมือวิเคราะห์รหัสบ่นเกี่ยวกับวิธีการที่ไม่มีอยู่
คำถาม
ด้วย Magento 2 เรามีสองวิธีใหม่:
getDataByKey($key)
getDataByPath($path)
มีเหตุผลที่ดีที่จะยังคงใช้getData($key)
หรือผู้ได้รับเวทมนตร์?
แก้ไข:
@Vinai ขอบคุณ ฉันไม่ได้พูดถึง@method
วิธีการเพราะวิธีการของฉันแตกต่างกันมาก
มันช่วย IDE เท่านั้น แต่ไม่มีผลกระทบต่อสิ่งอื่น
มีการรวม PR หลาย ๆ อันที่เป็น "การปรับให้เหมาะสมที่สุดของไมโคร" อย่างที่ต้องการ(int)
แทนintval()
หรือรับขนาดของอาเรย์ภายนอกลูป (แม้กระทั่งสำหรับอาเรย์ขนาดเล็ก)
ในทางกลับกันมี
ผู้ได้รับเวทมนตร์ที่มี "ค่าใช้จ่าย" ตามที่ Marius อธิบายไว้ ....
strtolower(trim(preg_replace('/([A-Z]|[0-9]+)/', "_$1", $name), '_'));
getData($key)
mehtods ต้องตรวจสอบเพิ่มเติมอีก 2-3 รายการ ...if ('' === $key) {
if (strpos($key, '/')) {
if ($index !== null) {
สำหรับรหัสของตัวเองตกลงอย่างสมบูรณ์ที่จะชอบวิธีการจริง แต่ในกรณีเดียวกันมันอาจจะไม่ ... เช่นคุณได้สร้างเหตุการณ์ที่กำหนดเอง ...
$value = $observer->getVar_1();
$value = $observer->getData('var_1');
$value = $observer->getDataByKey('var_1');
ใช้ที่ 3 กับ/** @var some $value */
ดูดีที่สุดสำหรับฉัน (?)