이것은 아마도 몇 년 동안 대규모 소프트웨어 프로젝트에서 작업하기 전까지는 깊이 이해하지 못할 것입니다. 많은 새로운 컴퓨터 과학 전공자들이 모든 올바른 단어 (캡슐화, 데이터 기능 및 유지 관리 용이성)로 답을 제공하지만 그 모든 것이 왜 좋은지 이해하는 사람은 거의 없습니다.
몇 가지 예를 살펴 보겠습니다.
- 배열이 반환 된 경우 모든 값을 미리 계산하거나 더 복잡한 값을 작성할 수있는 많은 작은 값을 반환해야합니다.
WordPress 게시물 목록을 반환하는 API 메서드를 생각해보십시오. 이 게시물에는 모두 저자가 있고, 저자는 이름, 이메일 주소, 심지어 약력이있는 프로필도 있습니다.
배열의 모든 게시물을 반환하는 경우 게시물 ID의 배열을 반환하도록 제한해야합니다.
[233, 41, 204, 111]
또는 다음과 같은 대규모 배열을 반환합니다.
[ title: 'somePost', body: 'blah blah', 'author': ['name': 'billy', 'email': 'bill@bill.com', 'profile': ['interests': ['interest1', 'interest2', ...], 'bio': 'info...']] ]
[id: '2', .....]]
ID 목록을 반환하는 첫 번째 경우는 해당 게시물에 대한 정보를 얻기 위해 각 ID에 대해 API 호출을해야하기 때문에별로 도움이되지 않습니다.
두 번째 경우는 90 %의 시간이 필요한 것보다 더 많은 정보를 가져오고 더 많은 작업을 수행합니다 (특히 이러한 필드 중 하나라도 구축하기가 매우 복잡한 경우).
반면에 객체는 필요한 모든 정보에 대한 액세스를 제공 할 수 있지만 실제로 해당 정보를 아직 가져 오지 않았습니다. 객체를 사용할 때 필드의 값을 결정하는 것은 느리게 (즉, 값이 필요하고 사전에 필요하지 않은 경우) 수행 될 수 있습니다.
- 어레이는 의도 한 것보다 더 많은 데이터와 기능을 노출합니다.
반환되는 대규모 배열의 예로 돌아갑니다. 이제 누군가는 포스트 배열 내의 각 값을 반복하고 인쇄하는 애플리케이션을 빌드 할 수 있습니다. 해당 포스트 배열에 하나의 추가 요소 만 추가하도록 API가 업데이트되면 응용 프로그램 코드가 중단 될 것입니다. 왜냐하면 아마 안될 새 필드를 인쇄하기 때문입니다. API가 반환 한 포스트 배열의 항목 순서가 변경되면 애플리케이션 코드도 손상됩니다. 따라서 배열을 반환하면 개체가 만들지 않을 모든 종류의 가능한 종속성이 생성됩니다.
객체는 유용한 기능을 제공 할 수 있도록 내부에 정보를 보유 할 수 있습니다. 예를 들어, post 객체는 이전 또는 다음 게시물을 반환 할만큼 똑똑 할 수 있습니다. 어레이는 당신을 위해 그렇게 할 수 없습니다.
위에서 언급 한 개체의 모든 이점은보다 유연한 시스템을 만드는 데 도움이됩니다.
count()없거나array_*()기능 을 사용할 수 없습니다 . 아무도 그것을 언급하지 않는 것 같습니까, 아니면 내가 뭔가를 놓치고 있습니까?