Score:0

ฉันจะรู้ได้อย่างไรว่าคุณสมบัติและวิธีการใดบ้างที่ใช้ได้กับออบเจกต์entity_metadata_wrapper

ธง us

อาจง่ายที่สุดในการเริ่มต้นด้วยตัวอย่าง

ดูเหมือนว่าฟังก์ชัน entity_metadata_wrapper() จะใช้เวทมนตร์ที่ซับซ้อนอยู่เบื้องหลังเพื่อส่งคืนวัตถุพร้อมข้อมูลทั้งหมดที่เกี่ยวข้องกับเอนทิตีที่เป็นปัญหา แต่ฉันจะทราบได้อย่างไรว่าคุณสมบัติและเมธอดใดบ้างที่พร้อมใช้งานสำหรับฉันเมื่อส่งคืนออบเจกต์แล้ว

สมมติว่าฉันมี Commerce Order (นี่ไม่จำเป็นต้องเป็นคำถามการค้า แต่เป็นเพียงตัวอย่างที่ดีเท่านั้น) ในการชำระเงิน ฉันต้องการตรวจสอบว่าคำสั่งซื้อมีบรรทัดรายการของประเภทผลิตภัณฑ์ที่กำหนดและแจ้งให้ผู้ใช้ทราบบางทีฉันอาจต้องการเปรียบเทียบราคารายการโฆษณาที่คำนวณได้กับราคาเดิมในประเภทผลิตภัณฑ์ด้วย

ตกลงตามนั้น คำสั่ง, รายการโฆษณา, ประเภทสินค้า, และ ผู้ใช้ ที่เป็นเอนทิตีอ้างอิงทั้งหมด ประเภทผลิตภัณฑ์มีฟิลด์ที่กำหนดเองหลายฟิลด์ ซึ่งอาจเป็นข้อมูลอ้างอิงไปยังเอนทิตีอื่น เช่น ข้อมูลการเรียกเก็บเงิน

$order_wrapper = entity_metadata_wrapper('commerce_order', $คำสั่งซื้อ);

ตามเอกสาร Entity API ตอนนี้เอนทิตีที่อ้างอิงทั้งหมดรวมอยู่ในวัตถุพร้อมให้ฉันใช้ด้วย wrapper

แต่ฉันจะรู้วิธีเข้าถึงค่าที่ฉันกำลังมองหาหรือตำแหน่งใดในโครงสร้างวัตถุได้อย่างไร ฟิลด์ drupal ที่อ้างอิงทั้งหมดเป็นชื่อเครื่องตามการออกแบบหรือไม่ ฉันรู้ว่าการผูกมัดต้องมีส่วน แล้วปัจจัยนั้นเข้ามาเกี่ยวข้องอย่างไร? และโครงสร้างนี้จะไม่เปลี่ยนแปลงทุกครั้งที่มีการเรียก entity_metadata_wrapper เนื่องจากเอนทิตีที่เป็นปัญหาสามารถอ้างอิงเอนทิตีอื่นโดยพลการ (ที่อ้างอิงเอนทิตีอื่น ฯลฯ) และถ้าโครงสร้างเป็นไปตามอำเภอใจ โค้ดใดๆ ที่อาศัยโครงสร้างนั้น ณ เวลาที่กำหนด ถ้ามีการเปลี่ยนแปลง โค้ดนั้นจะไม่ทำลายโค้ดหรือไม่

ในที่สุด ฉันเห็นการอ้างอิงถึงสิ่งต่างๆ เช่น -> บันทึก () และ -> ค่า () ในเอกสาร Entity API แต่ฉันไม่พบการอ้างอิงถึงชุดวิธีการทั้งหมดที่มีให้ฉัน มีโครงสร้างเชิงตรรกะใด ๆ ในการหาสิ่งนี้หรือฉันต้องใช้บางอย่างเช่น xdebug ทุกครั้ง (และถ้าฉันทำนั่นยังไม่ทำให้ฉันรู้ว่าฉันมีวิธีใดบ้างในการดำเนินการกับข้อมูล) นี่สำหรับ D7 แต่ถ้าคำตอบของ D8+ สามารถเพิ่มความชัดเจนได้ โปรดระบุ

misterdidi avatar
de flag
นี่คือสิ่งที่คุณกำลังมองหา? [https://www.drupal.org/docs/7/api/entity-api/entity-metadata-wrappers#debugging](https://www.drupal.org/docs/7/api/entity-api/ ตัวห่อหุ้มข้อมูลเมตาของเอนทิตี # การดีบัก)
cn flag
คำตอบสั้นๆ: ใช้ IDE และใช้เวลาในการตั้งค่าให้ถูกต้อง ตัวอย่างเช่น ฉันใช้ PHPStorm: https://drupalize.me/topic/phpstorm
cn flag
IDEs ไม่ได้ช่วยอะไรจริง ๆ ที่นี่ มันเป็นเมธอดเวทย์มนตร์ทั้งหมด ดังนั้นจึงไม่ทราบคุณสมบัติ/เมธอดจนกว่าจะรันไทม์ ดู https://drupal.stackexchange.com/questions/33473/is-there-a-good-way-to-inspect-objects-whose-type-is-derived-from-the-entitydrup สำหรับแนวคิดบางอย่าง

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา