Если вы продаете свое расширение или делитесь им с другими, подумайте о написании кода, понятного человеку.
- не делайте метод слишком сложным
- добавить блоки DOC в ваши методы *
- используйте правильные имена переменных, например
$productIds
вместо$ids
- То же самое для методов,
public function myOnProductSaveMethod() {...}
говорит ... ничего, но tryDisableInternetOnProductSave()
даст подсказку хотят, планируется
- используйте подсказки типа там, где это имеет смысл
someMethod(Varien_Data_Db_Collection $collection)
- избегайте магических чисел и строк **
- если вы используете модели, установите
$_eventPrefix
свойство (и $_eventObject
), чтобы сделать их лучше доступными для наблюдателей
- если вы добавите поля конфигурации системы
- установить значения по умолчанию в
config.xml
- добавить
<validate>
узлы в поля вsystem.xml
- добавить ресурсы ACL в
adminhtml.xml
- не добавляйте бесполезные / рекламные записи меню первого уровня в административный бэкэнд - ни в верхней панели, ни в разделах конфигурации
- добавить ресурсы ACL для всех действий контроллера (тоже массовые действия!)
- убедитесь, что ваши запросы работают с префиксами таблиц БД
- думать о (нет) обратной совместимости (это действительно основано на мнении)
- не поддерживают
Mysql4
классы
- не используйте устаревшие методы
- убедитесь, что ваше исключение работает как положено в каждом случае - добавьте UnitTests (PhpUnit, например)
- в дополнение к Дэвиду Мэннерсу ... добавьте
composer.json
также, чтобы упростить развертывание
- поскольку PHP5.6 - это EOL, напишите свой код для PHP7. Используйте
declare(strict_types=1);
и определяйте ваши типы ввода и вывода
- Magento2: проверьте ваш код с помощью инструментов статического анализа кода, таких как phpstan . Поддержка магических методов здесь . (последний коммит работает с 2.3, ранее для 2.1 / 2.2 - требуется phpstan 0.8.5)
* DOC блоки:
Если вы проверите свой код Magento-1 с помощью PHP_CodeSniffer для стандарта PSR2 или PHPMD , возможно, вы захотите добавить эти строки (где это имеет смысл) ...
- на занятия
@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
атрибутов изменился где-то между 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)