Если вы продаете свое расширение или делитесь им с другими, подумайте о написании кода, понятного человеку.
- не делайте метод слишком сложным
- добавить блоки 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)