如果您出售扩展或与他人共享,请考虑编写易于阅读的代码。
- 不要让方法太复杂
- 在您的方法中添加DOC块*
- 使用适当的变量名,例如
$productIds
代替$ids
- 方法也一样,
public function myOnProductSaveMethod() {...}
什么都没说,但是tryDisableInternetOnProductSave()
会暗示想要的计划
- 在有意义的地方使用类型提示
someMethod(Varien_Data_Db_Collection $collection)
- 避免魔术数字和字符串**
- 如果您使用模型set
$_eventPrefix
属性(和$_eventObject
)使观察者更好地访问它们
- 如果添加系统配置字段
- 在中设置默认值
config.xml
- 将
<validate>
节点添加到中的字段system.xml
- 将ACL资源添加到
adminhtml.xml
- 不要在管理后端中添加无用/广告的一级菜单条目-顶栏和配置部分均不添加
- 为所有控制器操作添加ACL资源(也为批量操作!)
- 确保您的查询使用数据库表前缀
- 考虑(不)向后兼容性(这实际上是基于观点的)
- 确保您的引出在每种情况下都能按预期工作-添加UnitTests(例如PhpUnit)
- 除了David Manners之外 ...添加一个
composer.json
也使部署更容易
- 由于PHP5.6是EOL,因此请为PHP7编写代码。使用
declare(strict_types=1);
并定义输入和输出类型
- Magento2:使用静态代码分析工具(例如phpstan)检查代码。在这里支持魔术方法。(最新提交适用于2.3,之前适用于2.1 / 2.2-要求phpstan 0.8.5)
* DOC块:
如果您使用PSR2标准或PHPMD的 PHP_CodeSniffer检查您的Magento-1代码,则可能要添加此行(在有意义的地方)...
- 上课
@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顺序ASC
与Zend_Db_Select::SQL_ASC
(例如)相同。
说“这不是必需品,因为它永远不会改变”?例如,catalog_product
属性的实体ID 在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)