엔터티에서 값을 가져 오려면 다음 두 가지 방법이 있습니다.
field_get_items
필드의 값을 사용 하고 얻습니다entity_metadata_wrapper
필드의 값을 사용 하고 얻습니다
entity_metadata_wrapper
언어 차이를 추상화 했지만 , 특히 PHP 5.3을 사용하는 경우 API가 여전히 어색합니다. 예를 들어, 긴 텍스트 필드의 값을 얻는 것은 일반적으로 다음 경로를 따릅니다.
$field = $wrapper->field->value();
print $field['safe_value'];
다행히도 PHP 5.4는 다음 구문을 지원합니다 print $wrapper->field->value()['safe_value'];
.
그러나 내 질문은 성능에 더 관심이 있습니다. 둘 다 어떻게 작동합니까? 그들은 값을 요청할 때마다 데이터베이스를 쿼리합니까? entity_metadata_wrapper
한 번에 모든 것을 요청 합니까 ? ( field_get_item
단일 값 검색에 더 적합하게 만들기 )
드루팔 소스를 깊이 파고들 정도로 용감하지 않습니다.
field_get_items()
나는 그 :) 꽤 개방 및 폐쇄의 경우 생각 때문에 초래 데이터베이스 오버 헤드를 제로
field_get_items()
데이터베이스 오버 헤드 가 발생하지 않습니까? 어딘가에 데이터를 가져와야합니까?
entity_metadata_wrapper
성능 측면 에서 어떻게 작동 하는지 알고 싶습니다 .
field_get_items()
오버 로드 가 이미 발생 했으므로 완전히로드 된 엔터티 개체를 전달했습니다. 정직하게 D7에서 약간 교살 된 경로입니다
field_view_field()
필드를 렌더링하기위한 것입니다. 필드 값을 가져 오는 함수는 field_get_items () 입니다.