عندما تقوم بتصحيح أخطاء كود PHP، قد يكون من المفيد فحص حالة الكود في نقطة زمنية محددة. يمكن أن يساعدك ذلك على فهم ما يحدث في الكود وتحديد أي مشكلات قد تكون سببًا في حدوث أخطاء.
لنلقِ نظرة على بعض الطرق التي يمكنك من خلالها فحص حالة كود PHP باستخدام دوال PHP المدمجة.
استخدام error_log() لتسجيل الرسائل
كما نوقش في درس خيارات تصحيح أخطاء WordPress المدمجة، يمكنك استخدام الدالة error_log() لتسجيل الرسائل في ملف debug.log الخاص بـ WordPress.
يمكن أن يكون هذا مفيدًا لأغراض تصحيح الأخطاء، إذ يتيح لك معرفة ما يحدث في الكود دون عرضه على الشاشة.
الدالة error_log() ليست خاصة بـ WordPress، فهي دالة PHP يمكنك استخدامها في أي كود PHP لتسجيل الرسائل في ملف سجل أخطاء PHP المُكوَّن على الخادم.
ومع ذلك، بمجرد تمكين خيارات تصحيح الأخطاء الخاصة بـ WordPress في ملف wp-config.php، سيتم تسجيل أي شيء يتم تمريره إلى error_log() في ملف debug.log الخاص بـ WordPress.
error_log( $some_variable );
سيؤدي ذلك إلى تسجيل قيمة $some_variable في ملف debug.log، حتى تتمكن من معرفة محتواه في تلك النقطة من الكود.
تتمثل فائدة استخدام error_log() في أنه يتيح لك تسجيل الرسائل في ملف دون عرضها على الشاشة. وإذا عرضتها على الشاشة، ولا سيما في بيئة إنتاج، فإنك تخاطر بكشف معلومات حساسة للمستخدمين.
كما أن رؤية المخرجات في ملف سجل تكون أحيانًا أسرع من الاضطرار إلى البحث في قائمة طويلة من المخرجات على الشاشة.
استخدام print_r()
هناك دالة مفيدة أخرى لفحص حالة كود PHP، وهي print_r(). تُخرج هذه الدالة قيمة متغير أو مصفوفة أو كائن بتنسيق مقروء للبشر، حتى تتمكن من معرفة محتواه.
ألقِ نظرة على كود PHP النموذجي هذا.
$some_array = array( 'apple', 'banana', 'cherry' );
print_r( $some_array );
سيُخرج هذا الكود ما يلي على الشاشة:
Array ( [0] => apple [1] => banana [2] => cherry )
غالبًا ما يضع المطورون print_r() داخل وسوم <pre> لجعل المخرجات أسهل في القراءة.
echo '<pre>';
print_r( $some_array );
echo '</pre>';
سيُخرج هذا ما يلي على الشاشة:
Array
(
[0] => apple
[1] => banana
[2] => cherry
)
لاحظ أن print_r() تُخرج افتراضيًا قيمة المتغير، لكنها لا تعيدها. إذا أردت استخدام مخرجات print_r() مع error_log()، فعليك تعيين المعامل الثاني إلى true.
error_log( print_r( $some_array, true ) );
سيؤدي ذلك إلى تسجيل مخرجات استدعاء print_r في ملف debug.log، حتى تتمكن من معرفة محتوى $some_array في تلك النقطة من الكود.
استخدام var_dump()
تُعد الدالة var_dump() دالة مفيدة أخرى لفحص حالة كود PHP. تُخرج هذه الدالة قيمة متغير أو مصفوفة أو كائن بتنسيق مقروء للبشر، إلى جانب معلومات إضافية حول نوع المتغير وطوله.
ألقِ نظرة على كود PHP النموذجي هذا.
$some_array = array( 'apple', 'banana', 'cherry' );
echo '<pre>';
var_dump( $some_array );
echo '</pre>';
سيُخرج هذا الكود ما يلي على الشاشة:
array(3) {
[0]=>
string(5) "apple"
[1]=>
string(6) "banana"
[2]=>
string(6) "cherry"
}
لاحظ أن var_dump() تُخرج قيمة المتغير، إلى جانب معلومات إضافية حول نوع المتغير وطوله. يمكن أن يكون هذا مفيدًا لأغراض تصحيح الأخطاء، إذ يوفر معلومات أكثر تفصيلًا عن المتغير مقارنةً بـ print_r().
بخلاف print_r()، لا يحتوي var_dump() على خيار لإعادة المخرجات إلى متغير، لذا لا يمكنك استخدامه مباشرةً مع error_log().
ومع ذلك، يمكنك استخدام ما يُسمى التخزين المؤقت للمخرجات لالتقاط مخرجات var_dump() ثم تسجيلها في ملف debug.log.
$some_array = array( 'apple', 'banana', 'cherry' );
ob_start();
var_dump( $some_array );
$output = ob_get_clean();
error_log( $output );
غالبًا ما يستخدم المطورون هذا النوع من الأكواد في دالة تسجيل خاصة، حتى يتمكنوا من استخدام كل من var_dump وerror_log معًا.
function log_var_dump( $variable ) {
ob_start();
var_dump( $variable );
$output = ob_get_clean();
error_log( $output );
}
قراءة إضافية
لمزيد من المعلومات حول الدوال المذكورة في هذا الدرس، راجع الصفحات التالية في توثيق PHP: