확장 프로그램을 판매하거나 다른 사람과 공유하는 경우 사람이 읽을 수있는 코드 작성을 고려하십시오.
- 방법을 너무 복잡하게 만들지 마십시오
- 메소드에 DOC 블록 추가 *
$productIds
대신 적절한 변수 이름을 사용하십시오.$ids
- 방법과 동일
public function myOnProductSaveMethod() {...}
하지만 ... none이지만 tryDisableInternetOnProductSave()
원하는 계획을 암시합니다.
- 말이되는 곳에 타입 힌트를 사용하십시오
someMethod(Varien_Data_Db_Collection $collection)
- 마법의 숫자 와 문자열을 피하십시오 **
- 모델 설정
$_eventPrefix
속성 (과 $_eventObject
)을 사용하여 관찰자가 더 쉽게 접근 할 수 있도록하는 경우
- 시스템 구성 필드를 추가하면
- 기본값을 설정하다
config.xml
<validate>
필드에 노드를 추가system.xml
- ACL 리소스를 추가
adminhtml.xml
- 관리자 백엔드에서 쓸모 없거나 광고하는 첫 번째 레벨 메뉴 항목을 추가하지 마십시오.
- 모든 컨트롤러 작업에 대한 ACL 리소스 추가
- 쿼리가 DB 테이블 접두사 와 작동하는지 확인
- 역 호환성에 대한 생각 (아니오 )
Mysql4
수업을 지원하지 않습니다
- 더 이상 사용되지 않는 메소드를 사용하지 마십시오
- 모든 경우에 extionsion이 예상대로 작동하는지 확인-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)