>  기사  >  백엔드 개발  >  키로 참조하지 않고 다른 구조체의 구조체 필드를 사용하는 방법

키로 참조하지 않고 다른 구조체의 구조체 필드를 사용하는 방법

WBOY
WBOY앞으로
2024-02-10 12:42:17393검색

키로 참조하지 않고 다른 구조체의 구조체 필드를 사용하는 방법

PHP를 개발하다 보면 한 구조에서 다른 구조의 필드를 사용하는 상황을 자주 접하게 됩니다. 그러나 이를 키로 직접 참조하면 코드가 복잡해지고 유지 관리가 불가능해질 수 있습니다. 그렇다면 다른 구조에서 구조 필드를 어떻게 사용합니까? PHP 편집기 Baicao는 코드를 더 명확하고 쉽게 읽을 수 있도록 간결하고 명확한 솔루션을 제공합니다. 아래를 살펴보겠습니다!

질문 내용

구조체 이름을 사용하지 않고 다른 구조체에 구조체 필드를 삽입하고 싶습니다.

나는 이것을 할 수 있다는 것을 안다:

으아악

그러나 다음과 같은 구조가 생성됩니다.

으아악

이런 일을 어떻게 할 수 있나요?

으아악

이렇게 사용하세요

으아악

가능한가요?

Solution

간단히 말하면, 현재 언어 구현으로는 할 수 없습니다.

텍스트를 초기화할 때는 명시적이어야 합니다(즉, text![sic]). user 包含 person,因此文字 user 必须包含文字 person 이후로 다음과 같습니다:

으아악

그러나 user 유형의 user 类型的变量,您就可以利用匿名字段通过 user 设置(或获取)匿名 personname변수

가 있으면 익명 필드를 활용하여 user를 통해 익명

을 설정(또는 가져오기)할 수 있습니다.

으아악

가서 나한테 이 모든 일을 시키는 이유는 무엇일까? person

내부가 원하는 방식으로 초기화될 수 있다고 상상해 봅시다

: user 结构并添加它自己的 name 으아악

이제 나중에 user 구조를 수정하고

추가 자체 필드를 추가한다고 상상해 봅시다. 으아악 name이제

새로운

필드를 user.person.name 的代码相同,但现在它正在初始化 user.name 초기화할 수 있습니다:

으아악

이전 초기화와는 다르다는 점 참고해주세요

. 안좋다.

추가 질문

user 中添加 name 字段已经类似地“破坏”了 user 变量上对 name이러한 코드에는 더 많은 함정이 숨겨져 있습니다.

먼저, userperson 字段,user.person.name 필드

를 추가하면 user 변수에서

에 대한 정규화되지 않은 참조가 name 字段,则 this 是编组为 "name" 的字段,并且 user.person.name유사하게 "손상"됩니다. 으아악 또한 익명

필드만 사용하면 user.person.name 필드는 기본적으로 "name" 필드로 json에 마샬링됩니다.

으아악 user.person.name 添加 json

필드가 추가되면

this"name"으로 마샬링된 필드이고 user.person.name 필드는 전혀 마샬링되지 않습니다. person 被编组为带有 name > . 좋아요

를 태그할 수 있다고 생각할 수도 있습니다. 으아악

하지만 이제 person 的编组字段名称,即使 user 没有 name

필드가 있는

객체

로 마샬링됩니다. 🎜 으아악 🎜🎜이런 일은 🎜 user에 🎜 필드가 없더라도 익명의 🎜 마샬링 필드 이름을 변경하려고 하면 발생합니다. 🎜 🎜간단히 말하면, "필드 추가" 방법으로 구조체 내에서 익명 구조체를 사용하는 것은 문제가 있고 취약할 수 있으므로 피해야 합니다. 🎜

위 내용은 키로 참조하지 않고 다른 구조체의 구조체 필드를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제