拡張機能を販売したり、他のユーザーと共有したりする場合は、人間が読めるコードを書くことを検討してください。
- メソッドを複雑にしすぎないでください
- メソッドに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)