จะเขียนนามสกุลที่กำหนดเองได้อย่างไร?


143

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

  • dev: โดยปกติlocalhostโครงการจะอยู่ในโฟลเดอร์ย่อย
  • preprod & สด

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


11
ดูเหมือนว่าหนึ่งในผู้ให้บริการส่วนขยายขนาดใหญ่ไม่ชอบคำถามนี้และลดระดับลง :)
Marius

1
โดยส่วนตัวแล้วไม่มีปัญหาใด ๆ กับ Wyomind แต่พวกเขาเข้ารหัสรหัสของพวกเขาและยังคงเป็น "พันธมิตรระดับพรีเมียม" :( (เป็นเพียงตัวอย่าง)
sv3n

คำตอบ:


185

นี่คือสิ่งที่ฉันมักจะทำ:

  1. เสมอกับการพัฒนาerror_reportingใน
  2. พัฒนาด้วยisDeveloperModeชุดtrueเสมอ เพียงเพิ่มไฟล์SetEnv MAGE_IS_DEVELOPER_MODE 1ของคุณhttpd.conf(หรือไฟล์ที่เกี่ยวข้องสำหรับ Nginx หรืออย่างอื่น)
  3. หากส่วนขยายนั้นเชื่อมโยงกับฟังก์ชันการทำงานหลักให้เพิ่มการพึ่งพาในไฟล์การประกาศ <depends><Mage_Catalog /></depend>
  4. หากโมดูลนั้นใช้สำหรับชุมชนให้ใช้communityเป็น codepool เพื่อให้โอกาสผู้พัฒนาในการแทนที่คลาสบางคลาสโดยไม่ต้องแก้ไขโค้ดโดยตรง
  5. วางไฟล์การออกแบบส่วนหน้าของคุณapp/design/frontend/base/default เพื่อให้พร้อมใช้งานสำหรับทุกธีม
  6. ใส่ไฟล์ออกแบบของผู้ดูแลระบบของคุณ app/design/adminhtml/default/defaultและอย่าเปลี่ยนธีมของผู้ดูแล ฉันอาจต้องการเปลี่ยนเป็นหนึ่งในโมดูลของฉัน
  7. คำนำหน้าชื่อไฟล์เลย์เอาต์และชื่อโฟลเดอร์เทมเพลตของคุณด้วยชื่อ บริษัท เพื่อให้แยกได้ง่ายขึ้น easylife_articles.xmlและapp/design/.../easylife_articles
  8. วางรีซอร์สสแตติกของคุณ (JavaScript, CSS และรูปภาพ) ในโฟลเดอร์ที่คล้ายกันเป็นไฟล์เทมเพลต easylife_articles/images/doh.png
  9. แนบไฟล์ข้อความอย่างง่ายพร้อมด้วยวิธีถอนการติดตั้งส่วนขยาย: ไฟล์ใดบ้างที่จำเป็นต้องลบออก, ต้องลบตารางใด, จำเป็นต้องลบการตั้งค่า config ใดออกจากcore_config_dataตาราง
  10. อย่าเขียนแบบสอบถามโดยตรงในแบบจำลองบล็อกหรือผู้ช่วยเหลือใช้โมเดลทรัพยากรสำหรับสิ่งนั้น
  11. Select * from sales_flat_order where ...อย่าเขียนคำสั่งโดยใช้ชื่อตารางโดยตรง ใช้และเปลี่ยนชื่อตารางโดยใช้Zend_Select->getTable('sales/order')
  12. ใช้ URL ฐานเพื่อรวมjsไฟล์ในเทมเพลต ผิด ขวา<script type="text/javascript" src="../js/some.js"></script> <script type="text/javascript" src="<?php echo Mage::getBaseUrl('js').'some.js'?>"></script>
  13. อย่าเขียนคลาสเว้นแต่จะจำเป็น ใช้ผู้สังเกตการณ์และหากไม่สามารถใช้วิธีการช่วยเหลือที่ได้รับเป็นพารามิเตอร์และอินสแตนซ์ของคลาสที่คุณต้องการแทนที่ ผิด : แทนที่เพื่อเพิ่มวิธีการMage_Catalog_Model_Product ขวา ในผู้ช่วยของคุณเพิ่ม getProductArticles()getProductArticles(Mage_Catalog_Model_Product $product)
  14. หากคุณแทนที่ชั้นเรียนให้ใส่รายชื่อของพวกเขาในreadme.txtไฟล์
  15. ใช้พา ธ ผู้ดูแลระบบเริ่มต้นสำหรับส่วนผู้ดูแลระบบของโมดูลของคุณ URL ผู้ดูแลระบบที่ไม่ถูกต้อง URL ผู้ดูแลระบบที่ถูกต้องarticles/adminhtml_articles/index admin/articles/index
  16. เพิ่ม ACL สำหรับส่วนผู้ดูแลระบบของคุณ ฉันอาจต้องการ จำกัด การเข้าถึงผู้ดูแลระบบบางคน
  17. อย่าเพิ่มกรอบงาน JavaScript อื่น (jQuery, MooTools ฯลฯ ) หากไม่จำเป็น เขียนโค้ดในต้นแบบ
  18. ทำให้เท็มเพลต HTML W3C ของคุณใช้ได้ (สำหรับนักพัฒนา OCD อย่างฉัน)
  19. อย่าวางภาพในmediaโฟลเดอร์ skinใช้ โดยmedia ทั่วไปโฟลเดอร์จะไม่ได้รับการกำหนดเวอร์ชันและทำให้การย้ายเว็บไซต์ไปยังสภาพแวดล้อมอื่นยากขึ้น
  20. ทดสอบส่วนขยายของคุณด้วยการเปิดและปิดแค็ตตาล็อก เพื่อไม่ให้เป็นสองเท่าของเวลาในการพัฒนาให้ใช้ความโกลาหลลิง
  21. ทดสอบส่วนขยายของคุณกับแคชและแคชonoff
  22. หลีกเลี่ยงการใช้อักษรตัวพิมพ์ใหญ่ในชื่อโมดูลและคลาส หากทดสอบไม่ถูกต้องอาจทำให้เกิดปัญหากับระบบปฏิบัติการที่แตกต่างกัน นี่เป็นข้อเสนอแนะที่มากกว่าไม่ใช่ 'ต้อง'
  23. จัดส่งเหตุการณ์ในรหัสของคุณเพื่อให้นักพัฒนาซอฟต์แวร์สามารถแก้ไขการทำงานได้ง่ายขึ้น
  24. ปฏิบัติตามมาตรฐานการเข้ารหัสเดียวกับที่วีโอไอพีใช้และแสดงความคิดเห็นรหัสของคุณ
  25. อย่าใช้แท็กสั้น PHP ( <? $this->doSomething() ?>) ใช้แท็กแบบเต็ม ( <?php $this->doSomething()?>) ยังไม่ใช้แท็ก echo สั้น ๆ ( <?="D'oh";?>) ใช้ ( <?php echo "D'oh";?>)
  26. แปลข้อความของคุณโดยใช้$this->__และเพิ่มไฟล์แปลสถานที่ด้วยข้อความของคุณ ( app/local/en_US/Easylife_Articles.csv) อย่างน้อยสำหรับen_USภาษา ไม่ใช่ทุกเว็บไซต์ที่สร้างขึ้นในภาษาอังกฤษและการระบุข้อความที่จะแปลต้องใช้เวลานาน
  27. หากคุณขายข้อเสนอส่วนขยายอย่างน้อยการสนับสนุนขั้นพื้นฐาน หรืออย่างน้อยก็ตอบอีเมลสนับสนุนที่คุณได้รับ
  28. อย่าโทรไปยังเซิร์ฟเวอร์ของคุณอย่างต่อเนื่องผ่านทางส่วนขยายเพื่อการตรวจสอบสิทธิ์ใช้งาน หนึ่งครั้งที่การติดตั้งนั้นมากเกินพอ (ฉันไม่ชอบวิธีนี้เช่นกัน แต่มันดีกว่าการโทรตลอดเวลา) (ได้รับแรงบันดาลใจจากคำถามนี้ )
  29. พัฒนาด้วยการเปิดใช้งานบันทึกและเป็นครั้งคราวดูที่var/log/system.logไฟล์ ข้อผิดพลาดที่แสดงในที่นี้จะไม่ปรากฏแม้ว่าจะเปิดโหมดนักพัฒนา หากมีข้อผิดพลาดอย่างน้อยหนึ่งรายการคุณจะพบไฟล์บันทึกขนาดใหญ่หลังจากใช้งานส่วนขยายไปสองสามเดือน
  30. หากส่วนขยายของคุณมีผลต่อกระบวนการเช็คเอาต์หรือคำสั่งซื้อไม่ทางใดก็ทางหนึ่งให้ตรวจสอบให้แน่ใจว่าใช้งานได้กับหลายการจัดส่งหรือหากไม่สามารถใช้งานกับการจัดส่งหลายแบบได้
  31. อย่าแทนที่แถบการแจ้งเตือนผู้ดูแลระบบเริ่มต้น (หรือ URL ฟีด) หากฉันสนใจในสิ่งที่คุณเสนอฉันจะสมัครรับจดหมายข่าวของคุณ ให้ฉันดูสิ่งที่วีโอไอพีพูด มันสำคัญกับฉันมาก
  32. หากคุณเข้ารหัสไฟล์รหัสด้วย Ioncube (หรืออย่างอื่น) ... ดี ... ฉันแค่เกลียดคุณและฉันหวังว่าธุรกิจของคุณจะล้มละลาย

นั่นคือสิ่งที่จนถึงขณะนี้ ฉันจะเพิ่มมากขึ้นทันทีที่ฉันนึกถึงอย่างอื่น


ฉันเห็นด้วยกับคุณมันเป็นการเริ่มต้นที่ดีอย่างแน่นอน แน่นอนคุณจะเข้าใจว่าไม่สามารถครอบคลุมการกำหนดค่าและปัญหาประเภทต่าง ๆ ได้เสมอไปอย่างน้อยก็จะลดโอกาสที่จะเกิดขึ้นได้ ปัญหาส่วนใหญ่ที่ฉันพบกับส่วนขยายอื่น ๆ หรือคนที่พบกับฉันนั้นเป็นเพราะความขัดแย้งกับการเขียนทับ
Sylvain Rayé

2
@ Marius แน่นอนว่า 1+ จาก me.it ครอบคลุมกรณีและสถานการณ์ส่วนใหญ่ที่เรากำลังเผชิญอยู่ในการพัฒนา
liyakat

4
@ColinM ก่อนอื่นขอให้มีความคิดเห็นของคุณที่นี่ :) ฉันยอมรับว่ามีความแตกต่างฉันจะแก้ไขคำตอบ แต่ฉันคิดว่าทั้งคู่ควรหลีกเลี่ยงอย่างน้อยที่สุดจนกว่า PHP 5.3 จะกลายเป็น "PHP 4 ใหม่" ฉันหมายถึงมันยังคงใช้ในขนาดใหญ่
Marius

4
@Marius คะแนนของคุณมีประโยชน์มาก จนถึง # 31 ฉันจดจ่อกับแต่ละประเด็นอย่างจริงจัง แต่ในวันที่ # 32 ฉันเพิ่งหัวเราะออกมาดัง ๆ +1 พิเศษสำหรับจุด # 32
MTM

1
If you encrypt your code files with Ioncube (or something else)...well...I just hate you and I hope your business goes bankruptฉันรู้สึกเหมือนกัน มีบาง บริษัท ที่ไม่ได้เสนอรุ่นที่ปรับปรุงคุณจะต้องจ่ายเงินให้กับพวกเขามันน่าผิดหวังจริง ๆ สำหรับฉันและไม่เข้าใจว่าทำไมพวกเขาต้องการขายผลิตภัณฑ์เดิมซ้ำแล้วซ้ำอีก ฉันแค่ไม่ซื้อผลิตภัณฑ์ของพวกเขาอีกต่อไป คุณรู้ว่าฉันพูดถึงใคร
Adarsh ​​Khatri

31

ฉันเป็นแฟนตัวยงของการใช้modmanเพื่อให้ฉันสามารถพัฒนาและควบคุมแหล่งที่มาเพียงแค่ส่วนขยายของฉันและปล่อยให้ไฟล์แกนและโครงสร้างโฟลเดอร์ไม่เปลี่ยนแปลง มันยังทำให้การทดสอบในการติดตั้งที่แตกต่างกันทำงานได้ราบรื่นขึ้น

โอ้และหนึ่งเคล็ดลับที่ยิ่งใหญ่มักจะพยายามติดตั้งส่วนขยายที่จัดทำแพคเกจของคุณไว้ในการติดตั้ง Magento ก่อนที่จะอัปโหลดไปยัง Magento Connect ฉันพลาดไฟล์หลายครั้งในเครื่องมือจัดการแพคเกจ


3
การโทรที่ดีเกี่ยวกับ 'ติดตั้งส่วนขยายแพ็คเกจของคุณในเครื่อง' ฉันคิดว่าสิ่งนี้ตกอยู่ในหมวดหมู่: 'ทดสอบส่วนขยายเทพเจ้าเจ้ากรรมของคุณบนลงล่าง'
Marius

ฉันเคยถูกจับโดยสิ่งนี้มาก่อนเช่นกัน ตรวจสอบให้แน่ใจว่าคุณได้ทดสอบแพ็คเกจบนการติดตั้งแบบคลีนที่ไม่เหมือนกับแพ็คเกจที่คุณใช้!
โจเซฟ Leedy

22

Andreas von Studnitz และ Dr. Nikolai Krambrock ให้การนำเสนอที่ดีเกี่ยวกับคุณภาพของรหัสใน Meet Magento DE 2014 พวกเขาแยกแยะความแตกต่างระหว่างคุณภาพของรหัสทั่วไปและคุณภาพของรหัสเฉพาะของคุณภาพเยี่ยม ในระยะสั้นมีกฎทั่วไปดังต่อไปนี้:

  • การใช้องค์ประกอบโครงสร้าง - เช่นเดียวกับคลาสและวิธีการ - ควรจัดเรียงไว้ในระดับกลาง องค์ประกอบเหล่านี้ของโครงสร้างทำให้รู้สึกเมื่อใช้สำหรับการสร้าง ดังนั้นพวกเขาจะต้องมีขนาดกลาง จะถือว่าใช้ 100-200 Lines of Code สำหรับชั้นเรียนและ 3-20 Lines of Code สำหรับวิธีการ
  • เนื่องจากการใช้ "ถ้า" หรือ "ในขณะที่" รหัสเยื้อง หากมีมากกว่า 3 การเยื้องจะเป็นการดีกว่าที่จะแก้ไข การเยื้องมากเกินไปเป็นหลักฐานว่ามีความซับซ้อนของรหัสดังนั้นควรหลีกเลี่ยง
  • รหัส Dead ควรหลีกเลี่ยงและลบ การวิเคราะห์แบบคงที่ช่วยในการค้นหาหากมีอยู่

สำคัญยิ่งกว่าคือกฎเฉพาะของวีโอไอพี:

  • โมดูลควรทำงานอย่างอิสระ พวกเขาควรมีการพึ่งพาเพียงเล็กน้อยในโมดูลอื่น ๆ และไม่มีการพึ่งพาแม่แบบ ทางออกคือการใช้ layout-updates (ฐาน / ค่าเริ่มต้น) แทนการปรับให้เข้ากับไฟล์เทมเพลตและโมดูลที่ครอบคลุมฟังก์ชั่นเพิ่มเติมของเทมเพลต
  • เพื่อรักษาความสามารถของการอัพเดตใน Magento core-hacks และ hacks ของโมดูลภายนอกควรหลีกเลี่ยง วิธีที่ดีกว่าคือการใช้ rewriters หรือผู้สังเกตการณ์แทน
  • สำหรับการเปลี่ยนแปลงจะเป็นการดีกว่าถ้าใช้สคริปต์การตั้งค่าแทนที่จะเป็นการเปลี่ยนแปลงโดยตรงของฐานข้อมูลหรือของผู้ดูแลระบบ ต้องขอขอบคุณการเปลี่ยนแปลงเหล่านี้ในครั้งเดียวเท่านั้น

นี่คือรายละเอียดเพิ่มเติมและวิดีโอของงานนำเสนอ: http://www.code4business.de/code-quality-magento/


1
แต่ถ้าคุณมีลิงค์เวอร์ชั่นภาษาอังกฤษที่คุณโพสต์ไว้จะดียิ่งกว่าเดิม
Marius

เวอร์ชันภาษาอังกฤษของงานนำเสนอนี้กำลังจะถูกเขียนในไม่ช้า ฉันจะทำให้คุณเป็นปัจจุบันและฉันจะแชร์ลิงก์ใหม่ทันทีที่มีการเผยแพร่เวอร์ชันภาษาอังกฤษ
user3743859

งานนำเสนอเวอร์ชันภาษาอังกฤษออนไลน์อยู่ในขณะนี้ นี่คือลิงค์ไปยังมัน: code4business.de/code-quality-magento
user3743859

ฮะ? มันยังคงเป็นภาษาเยอรมัน แต่ฉันเพิ่งเกิดขึ้นเพื่อเข้าร่วมการนำเสนอนี้เป็นภาษาอังกฤษที่ MeetMagentRo ประมาณ 2 สัปดาห์ที่แล้ว สิ่งที่ยอดเยี่ยม
Marius

18

หากคุณขายส่วนขยายของคุณหรือแชร์กับผู้อื่นให้คิดถึงการเขียนรหัสที่มนุษย์อ่านได้

  1. อย่าทำให้วิธีซับซ้อนเกินไป
  2. เพิ่มบล็อก DOC ให้กับวิธีการของคุณ*
  3. ใช้ชื่อตัวแปรที่เหมาะสมเช่น$productIdsแทน$ids
  4. เหมือนกันสำหรับวิธีการpublic function myOnProductSaveMethod() {...}พูดว่า ... ไม่มีอะไร แต่tryDisableInternetOnProductSave()จะให้คำแนะนำที่วางแผนไว้
  5. ใช้คำใบ้ประเภทที่เหมาะสม someMethod(Varien_Data_Db_Collection $collection)
  6. หลีกเลี่ยงการใช้เวทมนตร์ตัวเลขและสตริง**
  7. ถ้าคุณใช้โมเดลตั้ง$_eventPrefixคุณสมบัติ (และ$_eventObject) เพื่อให้ผู้สังเกตการณ์สามารถเข้าถึงได้ง่ายขึ้น
  8. หากคุณเพิ่มฟิลด์การกำหนดค่าระบบ
    • ตั้งค่าเริ่มต้นเป็น config.xml
    • เพิ่ม<validate>โหนดในฟิลด์system.xml
    • เพิ่มทรัพยากร ACL ไปที่ adminhtml.xml
  9. อย่าเพิ่มรายการเมนูระดับแรกที่ไร้ประโยชน์ในแบ็กเอนด์ผู้ดูแลระบบ - ไม่อยู่ในแถบด้านบนหรือในส่วนกำหนดค่า
  10. เพิ่มทรัพยากร ACL สำหรับการกระทำของคอนโทรลเลอร์ทั้งหมด (เช่นกัน!)
  11. ตรวจสอบให้แน่ใจแบบสอบถามของคุณทำงานกับคำนำหน้าตารางฐานข้อมูล
  12. คิดถึง (ไม่) ความสามารถในการย้อนกลับ(เป็นความเห็นที่อิงตามจริง ๆ )
    • ไม่รองรับMysql4คลาส
    • อย่าใช้วิธีการที่เลิกใช้แล้ว
  13. ตรวจสอบให้แน่ใจว่าการบีบอัดของคุณทำงานตามที่คาดไว้ในทุกกรณี - เพิ่ม UnitTests (ตัวอย่าง PhpUnit)
  14. นอกเหนือจากมารยาทของดาวิด ... เพิ่มอีกcomposer.jsonด้วยเพื่อทำให้การปรับใช้ง่ายขึ้น
  15. เนื่องจาก PHP5.6 คือ EOL ให้เขียนโค้ดของคุณสำหรับ PHP7 ใช้declare(strict_types=1);และกำหนดประเภทของคุณในและเอาท์พุท
  16. Magento2: ตรวจสอบรหัสของคุณด้วยรหัสคงวิเคราะห์เครื่องมือเช่นphpstan การสนับสนุนสำหรับวิธีมายากลที่นี่ (การคอมมิชชันล่าสุดทำงานกับ 2.3 ก่อนหน้า 2.1 / 2.2 - ต้องใช้ phpstan 0.8.5)

* บล็อก DOC:

หากคุณตรวจสอบโค้ด Magento-1 ของคุณด้วย PHP_CodeSniffer สำหรับมาตรฐานPSR2หรือPHPMDคุณอาจต้องการเพิ่มบรรทัดนี้ (ที่เหมาะสม)

  • ไปเรียน
    • @phpcs:disable PSR1.Classes.ClassDeclaration.MissingNamespace
    • @phpcs:disable PSR2.Classes.PropertyDeclaration.Underscore - คุณสมบัติที่สืบทอด
    • @phpcs:disable Squiz.Classes.ValidClassName.NotCamelCaps
    • @SuppressWarnings(PHPMD.CamelCaseClassName)
    • @SuppressWarnings(PHPMD.CamelCasePropertyName) - คุณสมบัติที่สืบทอด
  • วิธีการ
    • @SuppressWarnings(PHPMD.CamelCaseMethodName) - วิธีการสืบทอด
    • @SuppressWarnings(PHPMD.StaticAccess)- หากคุณใช้Mage::หรือการโทรแบบคงที่อื่น ๆ

** มักใช้:

  • ID ร้านค้าผู้ดูแลระบบ
    • 0 > Mage_Core_Model_App::ADMIN_STORE_ID
  • สินค้า status
    • 1 > Mage_Catalog_Model_Product_Status::STATUS_ENABLED
    • 2> Mage_Catalog_Model_Product_Status::STATUS_DISABLED ( 0อาจไม่คาดหวัง)
  • สินค้า type
    • simple > Mage_Catalog_Model_Product_Type::TYPE_SIMPLE
    • bundle > Mage_Catalog_Model_Product_Type::TYPE_BUNDLE
    • configurable > Mage_Catalog_Model_Product_Type::TYPE_CONFIGURABLE
    • grouped > Mage_Catalog_Model_Product_Type::TYPE_GROUPED
    • virtual > Mage_Catalog_Model_Product_Type::TYPE_VIRTUAL
  • สินค้า visibity
    • 1 > Mage_Catalog_Model_Product_Visibility::VISIBILITY_NOT_VISIBLE
    • 2 > Mage_Catalog_Model_Product_Visibility::VISIBILITY_IN_CATALOG
    • 3 > Mage_Catalog_Model_Product_Visibility::VISIBILITY_IN_SEARCH
    • 4 > Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH

เดียวกันสำหรับการสั่งซื้อ SQL ASCVS (ตัวอย่าง)Zend_Db_Select::SQL_ASC

การพูดว่า"ไม่ใช่สิ่งจำเป็นเพราะจะไม่มีวันเปลี่ยนแปลง" ? ตัวอย่างเช่นรหัสเอนทิตีสำหรับcatalog_productแอตทริบิวต์เปลี่ยนที่อยู่ระหว่าง Magento 1.5 และ 1.9 จาก10เป็น4เป็นดังนั้นสิ่งนี้อาจทำให้ส่วนขยายของคุณแตก:

$collection->addFieldToFilter('entity_type_id', 10)

ใช้สิ่งนี้แทนเพิ่มหนึ่งแบบสอบถาม แต่คุณจะปลอดภัย ...

$entityTypeId = Mage::getModel('eav/config')
    ->getEntityType(Mage_Catalog_Model_Product::ENTITY)
    ->getEntityTypeId();

$collection->addFieldToFilter('entity_type_id', $entityTypeId)

8

@marius เกี่ยวกับมาตรฐานการเข้ารหัส (จุด 24 ในรายการของคุณ)

ฉันชอบใช้PHP_CodeSnifferพร้อมกับEQP และ ECG CS เพื่อบังคับใช้มาตรฐานเหล่านี้โดยอัตโนมัติ

ใช้PHP_CodeSnifferคุณไม่ต้องกังวลเกี่ยวกับการลืมสิ่งที่ต้องการเปลี่ยนarray()กับ[]หลีกเลี่ยงการใช้is_nullออกจากตัวแปรท้องถิ่นที่ไม่ได้ใช้หรือแม้กระทั่งวิธีการโดยไม่ต้อง PHPDoc บล็อก

PHP_CodeSnifferมักจะบอกคุณเกี่ยวกับมัน


ตกลงกัน! วิธีที่เป็นไปได้: magento.stackexchange.com/questions/178640/…
sv3n

ฉันคิดว่าไม่มีวิธีกำหนดค่า CS ทั้งสองใน PHPStorm (สำหรับผู้ที่ใช้ PHPStorm) แต่คุณสามารถใช้เทอร์มินัลเพื่อตรวจสอบ CS ในรหัสของคุณ นอกจากนี้ยังมีเครื่องมือต่าง ๆ เช่น grumphp github.com/phpro/grumphpที่ช่วยนิดหน่อย
diazwatson

มันอาจจะช่วยให้คุณmagento.stackexchange.com/questions/200022/…
Pramod Kharade
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.