拡張機能を販売したり、他のユーザーと共有したりする場合は、人間が読めるコードを書くことを検討してください。
- メソッドを複雑にしすぎないでください
- メソッドにDOCブロックを追加します*
- 以下のような適切な変数名、使用
$productIdsの代わりに$ids
- メソッドについても同じで、
public function myOnProductSaveMethod() {...}...何も言わないがtryDisableInternetOnProductSave()、ヒントが必要だというヒントを与える
- 意味のある場所でタイプヒントを使用する
someMethod(Varien_Data_Db_Collection $collection)
- 魔法の数字と文字列を避ける**
- モデルセット
$_eventPrefixプロパティ(および$_eventObject)を使用して、オブザーバーによりアクセスしやすくする場合
- システム構成フィールドを追加する場合
- デフォルト値を設定する
config.xml
<validate>ノードをフィールドに追加しますsystem.xml
- ACLリソースを追加する
adminhtml.xml
- 管理バックエンドに不要な/広告の第1レベルメニューエントリを追加しないでください-トップバーにも設定セクションにも
- すべてのコントローラーアクションにACLリソースを追加します(マスアクションも!)
- クエリがDB テーブルプレフィックスで機能することを確認します
- 下位互換性について考えます(これは本当に意見に基づいています)
Mysql4クラスをサポートしていません
- 非推奨のメソッドを使用しないでください
- すべてのケースで期待通りに機能することを確認してください-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 (例えば)。
言って、「それは今までに変更されることはありません原因それはnessessaryではありませんか」?たとえばcatalog_product、Magento 1.5と1.9の間のどこかで属性のエンティティIDがからに変更された10ため4、これにより拡張機能が破損する可能性があります。
$collection->addFieldToFilter('entity_type_id', 10)
代わりにこれを使用すると、クエリが1つ追加されますが、安全になります...
$entityTypeId = Mage::getModel('eav/config')
->getEntityType(Mage_Catalog_Model_Product::ENTITY)
->getEntityTypeId();
$collection->addFieldToFilter('entity_type_id', $entityTypeId)