>  기사  >  백엔드 개발  >  print_r()은 언제 DateTime 객체가 팬텀 속성을 얻도록 합니까?

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

Barbara Streisand
Barbara Streisand원래의
2024-10-21 12:50:02313검색

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.