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->timezone
"timezone_type" 속성은 시간대의 문자열 표현과 관련된 내부 값이므로 PHP API를 통해 액세스할 수 없습니다.
위 내용은 print_r()은 언제 DateTime 객체가 팬텀 속성을 얻도록 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!