คำถามติดแท็ก coding-standards

5
มาตรฐานการเข้ารหัสวีโอไอพี
ฉันเพิ่งเริ่มทำงานอย่างกว้างขวางด้วยMagentoและดมกลิ่นรหัสและฉันอยากจะรู้ว่ามาตรฐานที่ฉันควรปฏิบัติตาม ฉันลองใช้มาตรฐานการเข้ารหัสของ Zendแต่ฉันไม่ต้องการใช้ขีด จำกัด 80 บรรทัดและไม่ได้ใช้ในแกนเช่นกัน หลังจากนั้นฉันลองใช้มาตรฐาน CS2แต่ก็ไม่ได้ผลเพราะ_ฟังก์ชั่นต่าง ๆ และชื่อคลาสที่มี_ในนั้นและไม่มีเนมสเปซ ดังนั้นจะมีมาตรฐานอื่นที่รหัสหลักตรงตาม 100% ด้วยหรือไม่ ถ้าไม่มีวีโอไอพีไม่ควรมีมาตรฐานการเข้ารหัสของตัวเอง? มันมีไซต์ stackexchange ของตัวเองมาตรฐานการเข้ารหัสที่กำหนดไว้อย่างดีบางอย่างอาจถูกนำไปใช้โดยนักพัฒนาส่วนขยาย

2
ทำไมฟังก์ชั่น PHP มากมายจึงไม่อนุญาตใน Magento ECG Coding Standard?
มาตรฐานการเข้ารหัส ECG ของ Magento ดูเหมือนจะเป็นทางการ (อย่างน้อยก็) เป็นมาตรฐานสำหรับ Magento 1 ส่วนขยาย: https://github.com/magento-ecg/coding-standard แต่ฉันไม่เข้าใจเหตุผลที่อยู่เบื้องหลังกฎทั้งหมดและการดมกลิ่นรหัสด้วยข้อความของพวกเขาเพียงอย่างเดียวไม่ได้ช่วยอะไรมาก มีเอกสารรายละเอียดเกี่ยวกับมาตรฐานหรือไม่ ฉันรู้วิธีปฏิบัติที่ดีที่สุดทั่วไปและคู่มือนักพัฒนาแต่ไม่พบสิ่งใดที่เฉพาะเจาะจงเกี่ยวกับมาตรฐานการเข้ารหัส สิ่งที่ฉันกังวลมากที่สุดคือความเข้มงวดในการไม่ใช้ฟังก์ชั่น PHP ตัวอย่างเช่น: ทำไมทุกระบบไฟล์ที่เกี่ยวข้องกับฟังก์ชั่น PHP ต้องห้าม ? ผมคิดว่าคุณควรจะใช้Varien_Io_File, Varien_File_Objectฯลฯ แต่แม้นักพัฒนาหลักไม่ได้ตระหนักถึงทุกชั้นเรียน Varien และคุณมักจะพบสิ่งที่ต้องการในMage_ImportExport_Model_Import_Adapter_Csv: $this->_fileHandler = fopen($this->_source, 'r'); ดังนั้นแกนกลางไม่ใช่ตัวอย่างที่ดีที่สุดเช่นเคย ฟังก์ชันที่ต้องห้าม IMHO อื่น ๆ ที่น่าสงสัย: mb_parse_str parse_str parse_url base64_decode ใช่มันถูกใช้ในแบ็คดอร์ แต่การแบนevalควรเพียงพอและมีกรณีการใช้งานที่ถูกต้องเช่นการเข้ารหัสข้อมูลไบนารี่ และนอกเหนือจากjson_decode(ซึ่งไม่ได้รับอนุญาต) ไม่มีผู้ช่วยหลักสำหรับสิ่งนี้ ที่มา: https://github.com/magento-ecg/coding-standard/blob/master/Sniffs/Security/ForbiddenFunctionSniff.php โดยพื้นฐานแล้วคำถามของฉันยังคงเป็น: มาตรฐานนี้บันทึกไว้ที่ไหน และ / …

2
Magento 2 - แนวปฏิบัติที่ดีในการใช้ / หลีกเลี่ยง Magic getters?
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()หรือรับขนาดของอาเรย์ภายนอกลูป (แม้กระทั่งสำหรับอาเรย์ขนาดเล็ก) ในทางกลับกันมี ผู้ได้รับเวทมนตร์ที่มี "ค่าใช้จ่าย" ตามที่ …

4
มีเครื่องมืออะไรบ้างสำหรับการตรวจสอบมาตรฐานการเข้ารหัสของ Magento 2
ฉันกำลังทำงานเกี่ยวกับโครงการตรวจสอบมาตรฐานการเข้ารหัสของ Magento 2 มีเครื่องมืออื่นใดนอกเหนือจากPHP_CodeSnifferเพื่อตรวจสอบสถานะการเข้ารหัสของ Magento 2 และ PHP หรือไม่

1
หลีกเลี่ยงการบันทึกเป็นลูปในการกระทำโดยรวม
ฉันได้สร้างโมดูล CRUD ของตัวเองที่มีการดำเนินการแก้ไขแบบอินไลน์คล้ายกับหน้า CMS ทุกอย่างทำงานได้ดี แต่เมื่อใช้ phpsniffer กับมาตรฐาน EcgM2ฉันได้รับคำเตือนนี้: ตรวจพบเมธอด LSD รุ่น () ในลูป ฉันจะหลีกเลี่ยงสิ่งนี้ได้อย่างไร หมายเหตุ: คำเตือนเดียวกันจะปรากฏขึ้นหากฉัน "ดมกลิ่น" ไฟล์หลักที่ลิงก์ด้านบน นี่คือexecuteวิธีการของฉันในกรณีที่มีคนต้องการมัน แต่มันคล้ายกับตัวควบคุมหน้า CMS public function execute() { /** @var \Magento\Framework\Controller\Result\Json $resultJson */ $resultJson = $this->jsonFactory->create(); $error = false; $messages = []; $postItems = $this->getRequest()->getParam('items', []); if (!($this->getRequest()->getParam('isAjax') && count($postItems))) { return …

5
ละเว้นพารามิเตอร์ที่ไม่ได้ใช้ด้วยรหัสดมกลิ่น
ฉันกำลังใช้งานรหัสผ่านพร้อมกับมาตรฐานEcgM2ในส่วนขยายที่กำหนดเองและฉันได้รับคำเตือน $contextไม่เคยใช้ พารามิเตอร์เมธอด สำหรับInstallSchema.phpไฟล์ ฉันจะทำให้คำเตือนนี้หายไปได้อย่างไร วิธีการของฉันมีลักษณะเช่นนี้ (สังเกตSuppressWarningsที่ด้านบนของมัน): /** * {@inheritdoc} * @SuppressWarnings(PHPMD.ExcessiveMethodLength) * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ public function install(SchemaSetupInterface $setup, ModuleContextInterface $context) { //my install script here that does not use the parameter $context }

4
แนวทางปฏิบัติที่ดีที่สุดของระบบไฟล์
ฉันกำลังทำงานกับส่วนขยายของ Magento 2 ที่ต้องอ่านไฟล์จากระบบไฟล์ เมื่อใช้ PHP ดมกลิ่นโดยใช้มาตรฐาน ECGM2 ก็บ่นเกี่ยวกับความจริงที่ว่าฉันใช้ฟังก์ชั่นเหมือนหรือ basenamedirname ห้ามใช้ฟังก์ชั่น dirname () หรือ ห้ามใช้งานฟังก์ชันพื้นฐาน () ฉันควรใช้ wrapper แบบไหนเพื่อให้ได้เอฟเฟกต์เดียวกัน [แก้ไข] นี่คือรหัสบางส่วน แต่ไม่เกี่ยวข้องกับคำถาม ฉันมีคลาสคอลเล็กชันที่ขยาย\Magento\Framework\Data\Collection\Filesystemคลาสและฉันต้องการแสดงรายการคอลเล็กชันนี้ในกริด (องค์ประกอบ UI) และหนึ่งในแอ็คชั่นในกริดคือการดาวน์โหลด สำหรับสิ่งนี้ฉันต้องได้รับชื่อจริงของไฟล์เพื่อที่ฉันจะได้ส่งไฟล์ไปยังการดำเนินการดาวน์โหลด // here $file is dynamic and it can be // folder/filename.xml or folder/subfolder/file.tar.gz //so there is no strict number of folders and subfolders. …

3
การปฏิบัติตาม ECG: จะทำอย่างไร?
มีบางอย่างเช่นcoding standardสำหรับMagento 1 ที่เรียกว่าECGควรหลีกเลี่ยงสิ่งต่าง ๆ มากมายหรือวิธีการที่ไม่ควรใช้ ลองสร้างรายการที่ครอบคลุมทุกกรณีที่มีการโยน "ข้อผิดพลาด" หรือ "คำเตือน" ในรหัสของคุณ ด้านล่างคุณจะพบรายการพร้อมคำเตือนที่เป็นไปได้ทั้งหมด ฉันจะอัปเดตโพสต์นี้เป็นระยะและเชื่อมโยงไปยังคำตอบที่ได้รับและ upvoted หมายเหตุ:โปรดพยายามหลีกเลี่ยงคำตอบที่ซ้ำกัน;) ดาวน์โหลด: https://github.com/magento-ecg/coding-standard คลื่นไฟฟ้าหัวใจ Sniffs การเรียนการสอน Mysql4 คลาส Mysql4 ล้าสมัยแล้ว วิธีจัดการคลาส“ Mysql4” ที่เลิกใช้แล้วเมื่อเขียนโมเดลทรัพยากรใหม่ โมดูล Magento 1.9 ผิดปกติเมื่อเปลี่ยนโฟลเดอร์ทรัพยากรจาก Mysql4 เป็น Resource การเริ่มต้นวัตถุ การทำให้อินสแตนซ์ของวัตถุโดยตรง (คลาส% s) ไม่ได้รับการสนับสนุนใน Magento protected $disallowedClassPrefixes = array( 'Mage_', 'Enterprise_', ); ... PHP ไปที่ …

1
Magento 2: สถานะของ M2 เกี่ยวกับการปฏิบัติตาม PSR คืออะไร?
ดังนั้นตามเอกสารอย่างเป็นทางการฉันเข้าใจว่า Magento 2 นั้นสอดคล้องกับ PSR-1 และ PSR-2 ฉันสงสัยว่าMagento 2 สอดคล้องกับคนอื่นหรือไม่? PSR-3: อินเตอร์เฟส Logger PSR-4: มาตรฐานการโหลดอัตโนมัติ PSR-6: อินเตอร์เฟสการแคช PSR-7: อินเตอร์เฟสข้อความ HTTP คำตอบที่ฉันคาดหวังสามารถพิจารณาร่าง PSR ได้เช่นกัน
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.