Nếu bạn bán tiện ích mở rộng của mình hoặc chia sẻ nó với những người khác, hãy nghĩ về việc viết mã có thể đọc được.
- đừng làm cho phương pháp quá phức tạp
- thêm khối DOC vào phương thức của bạn *
- sử dụng tên biến thích hợp, như
$productIdsthay vì$ids
- tương tự đối với các phương thức,
public function myOnProductSaveMethod() {...}nói ... không có gì, nhưng tryDisableInternetOnProductSave()sẽ đưa ra gợi ý muốn lên kế hoạch
- sử dụng gợi ý loại mà nó có ý nghĩa
someMethod(Varien_Data_Db_Collection $collection)
- tránh số ma thuật và chuỗi **
- nếu bạn sử dụng các mô hình đặt thuộc
$_eventPrefixtính (và $_eventObject) để làm cho chúng dễ tiếp cận hơn với người quan sát
- nếu bạn thêm các trường cấu hình hệ thống
- đặt giá trị mặc định trong
config.xml
- thêm
<validate>các nút vào các trường trongsystem.xml
- thêm tài nguyên ACL vào
adminhtml.xml
- không thêm các mục trình đơn cấp một vô dụng / quảng cáo trong phần phụ trợ quản trị - không nằm trong topbar cũng như trong các phần cấu hình
- thêm tài nguyên ACL cho tất cả các hành động của bộ điều khiển (quá khối lượng!)
- đảm bảo truy vấn của bạn hoạt động với tiền tố bảng DB
- suy nghĩ về (không) khả năng tính toán lạc hậu (đây thực sự là ý kiến)
- không hỗ trợ
Mysql4các lớp học
- không sử dụng các phương pháp không dùng nữa
- đảm bảo ngoại lệ của bạn hoạt động như mong đợi trong mọi trường hợp - thêm UnitTests (ví dụ PhpUnit)
- ngoài David Manners ... hãy thêm
composer.jsonvào để giúp triển khai dễ dàng hơn
- vì PHP5.6 là EOL, hãy viết mã của bạn cho PHP7. Sử dụng
declare(strict_types=1);và xác định các loại đầu vào và đầu ra của bạn
- Magento2: kiểm tra mã của bạn bằng các công cụ phân tích mã tĩnh như phpstan . Hỗ trợ cho các phương pháp ma thuật ở đây . (cam kết mới nhất hoạt động với 2.3, trước đó cho 2.1 / 2.2 - taht yêu cầu phpstan 0.8.5)
* Khối DOC:
Nếu bạn kiểm tra mã Magento-1 của mình bằng PHP_CodeSniffer cho tiêu chuẩn PSR2 hoặc PHPMD, bạn có thể muốn thêm dòng này (nơi có ý nghĩa) ...
- đến lớp
@phpcs:disable PSR1.Classes.ClassDeclaration.MissingNamespace
@phpcs:disable PSR2.Classes.PropertyDeclaration.Underscore - tài sản thừa kế
@phpcs:disable Squiz.Classes.ValidClassName.NotCamelCaps
@SuppressWarnings(PHPMD.CamelCaseClassName)
@SuppressWarnings(PHPMD.CamelCasePropertyName) - tài sản thừa kế
- phương pháp
@SuppressWarnings(PHPMD.CamelCaseMethodName) - phương pháp kế thừa
@SuppressWarnings(PHPMD.StaticAccess)- nếu bạn sử dụng Mage::hoặc các cuộc gọi tĩnh khác
** Thường được sử dụng:
- ID cửa hàng quản trị
0 > Mage_Core_Model_App::ADMIN_STORE_ID
- sản phẩm
status
1 > Mage_Catalog_Model_Product_Status::STATUS_ENABLED
2> Mage_Catalog_Model_Product_Status::STATUS_DISABLED (không 0như mong đợi)
- sản phẩm
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
- sản phẩm
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
Tương tự cho thứ tự SQL ASCso với Zend_Db_Select::SQL_ASC (ví dụ) .
Nói rằng "nó không cần thiết vì nó sẽ không bao giờ thay đổi" ? Ví dụ thực ID cho catalog_productthuộc tính thay đổi trong khoảng từ Magento 1.5 và 1.9 từ 10đến 4, vì vậy điều này có thể phá vỡ gia hạn của bạn:
$collection->addFieldToFilter('entity_type_id', 10)
Sử dụng điều này thay vì thêm một truy vấn, nhưng bạn sẽ an toàn ...
$entityTypeId = Mage::getModel('eav/config')
->getEntityType(Mage_Catalog_Model_Product::ENTITY)
->getEntityTypeId();
$collection->addFieldToFilter('entity_type_id', $entityTypeId)