print_r()은 언제 DateTime 객체가 팬텀 속성을 얻도록 합니까?

Barbara Streisand
풀어 주다: 2024-10-21 12:50:02
원래의
305명이 탐색했습니다.

When Does print_r() Cause DateTime Objects to Gain Phantom Properties?

print_r() 함수 및 DateTime 객체: 가상 속성 추가

PHP 5.3에서 print_r() 함수는 DateTime 객체가 속성을 획득하도록 할 수 있습니다. 클래스에 명시적으로 정의되지 않은 추가 속성입니다. 다음 코드 예제를 고려하십시오.

<code class="php">$m_oDate = new DateTime('2013-06-12 15:54:25');
print_r($m_oDate);</code>
로그인 후 복사

이 코드의 출력에는 기본적으로 표시되지 않는 "date"와 같은 추가 속성이 포함됩니다.

그러나 동일한 객체가 직접 액세스하면 이러한 속성은 정의되지 않습니다.

<code class="php">$m_oDate = new DateTime('2013-06-12 15:54:25');
echo $m_oDate->date;</code>
로그인 후 복사

이러한 불일치는 DateTime 객체에 저장된 타임스탬프에 대한 추가 정보를 제공하여 디버깅을 용이하게 하기 위해 PHP 5.3 내부의 변경으로 인해 발생합니다. 이로 인해 개체가 텍스트에 덤프될 때 가상 공용 속성이 생성됩니다.

이 문제를 방지하려면 대신 리플렉션이나 적절한 DateTime 메서드를 사용하여 원하는 정보에 액세스하는 것이 좋습니다. 다음은 몇 가지 예입니다.

  • $obj->date

    • $obj->format('Y-m-d H: i:s') 대신
  • $obj->timezone

    • $obj->getTimezone을 사용하세요. ()->getName(), $obj->getTimezone()->getOffset() 또는 $obj->getTimezone()->listAbbreviations()

"timezone_type" 속성은 시간대의 문자열 표현과 관련된 내부 값이므로 PHP API를 통해 액세스할 수 없습니다.

위 내용은 print_r()은 언제 DateTime 객체가 팬텀 속성을 얻도록 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!