Varien_Object
(M1)과 DataObject
(M2)의 매직 게터 는 일반적인 관행이지만 Magento 2에서는 사용이 잘못되었습니다.
좋은:
- 읽기 쉬운 쓰기
나쁜
- 키에 숫자를 사용할 때 문제가 발생합니다 ( Magento 2 : 콜렉션의 다른 방식으로 필드 가져 오기 또는 낙타 케이스를 사용하여 사용자 정의 제품 속성 가져 오기 참조 )
- 존재하지 않는 방법에 대한 코드 분석 도구 불평
의문
Magento 2에는 두 가지 새로운 방법이 있습니다.
getDataByKey($key)
getDataByPath($path)
여전히 사용 getData($key)
하거나 마법 게터를 사용해야 할 이유가 있습니까?
편집하다:
@Vinai 감사합니다. @method
내 접근 방식이 상당히 다르기 때문에 방법을 언급하지 않았습니다 .
IDE에만 도움이되지만 다른 것에는 영향을 미치지 않습니다.
루프 외부에서 배열 크기를 가져 오는 (int)
대신 intval()
작은 배열로 변환하는 것과 같은 "미세 최적화"인 여러 mergedf PR이 있습니다 .
반면에
마리우스가 묘사 한 것처럼 "오버 헤드"가있는 마법의 게터 ....
strtolower(trim(preg_replace('/([A-Z]|[0-9]+)/', "_$1", $name), '_'));
getData($key)
mehtods는 2-3 추가 검사를해야합니다 ...if ('' === $key) {
if (strpos($key, '/')) {
if ($index !== null) {
자체 코드의 경우 실제 방법을 선호하는 데 전적으로 동의하지만 같은 경우에는 불가능합니다 ... 예 : 사용자 정의 이벤트를 만들었습니다 ...
$value = $observer->getVar_1();
$value = $observer->getData('var_1');
$value = $observer->getDataByKey('var_1');
3을 사용하는 /** @var some $value */
것이 가장 좋습니다. (?)