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ư
$productIds
thay 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
$_eventPrefix
tí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ợ
Mysql4
cá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.json
và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 0
như 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 ASC
so 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_product
thuộ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)