Properti Ditambah pada DateTime Objects oleh print_r()
Fungsi PHP print_r() memaparkan maklumat tentang pembolehubah, termasuk sifatnya. Walau bagaimanapun, apabila digunakan dengan objek DateTime, print_r() menambah sifat yang tidak ditakrifkan sebagai sebahagian daripada kelas DateTime.
Pertimbangkan kod berikut:
$m_oDate = new DateTime('2013-06-12 15:54:25'); print_r($m_oDate);
Ini menghasilkan output yang serupa dengan yang berikut:
DateTime Object ( [date] => 2013-06-12 15:54:25 [timezone_type] => 3 [timezone] => Europe/Amsterdam )
Perhatikan sifat tambahan "tarikh", "jenis_zon masa" dan "zon waktu". Sifat ini tidak ditakrifkan dalam dokumentasi kelas DateTime.
Punca
Tingkah laku ini ialah pepijat yang diketahui dalam versi PHP lebih awal daripada 7.2.0. Untuk membantu dengan penyahpepijatan, PHP 5.3 memperkenalkan fungsi dalaman untuk memaparkan butiran nilai cap masa asas yang dipegang oleh objek DateTime. Sebagai kesan sampingan, sifat awam hantu ini ditambahkan pada objek apabila ia dibuang ke teks menggunakan print_r().
Akibat
Tambahan sifat ini boleh membawa kepada isu berikut:
Alternatif
Untuk mengakses maklumat tentang objek DateTime, gunakan kaedah berikut:
Kesimpulan
Walaupun print_r() ialah alat yang berguna untuk penyahpepijatan, adalah penting untuk mengetahui kesan sampingannya apabila digunakan dengan objek DateTime. Menggunakan kaedah yang sesuai untuk mengakses maklumat DateTime memastikan keserasian dengan versi PHP masa hadapan dan mengelakkan kemungkinan ralat.
Atas ialah kandungan terperinci Apakah Sifat yang Ditambahkan pada Objek DateTime oleh print_r() dan Mengapa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!