أفضل الممارسات لاستخدام الثوابت السحرية لـ PHP

StackOverflow https://stackoverflow.com/questions/4286946

  •  28-09-2019
  •  | 
  •  

سؤال

ما هي أفضل الممارسات لاستخدام الثوابت السحرية لـ PHP ، مثل __LINE__ , __FILE__, __FUNCTION__, __CLASS__ و __METHOD__?

على سبيل المثال أستخدمه __LINE__ و __CLASS__ لتحديد خطأ SQL مثل هذا:

$result = mysql_query($query)
or die("Error SQL line ".__LINE__ ." class ".__CLASS__." : ".mysql_error());

هل هذه ممارسة مقبولة؟

هل كانت مفيدة؟

المحلول

الممارسة التي تظهرها لها عيوبان:

  • أنت لا تعرض الملف الذي يحدث الخطأ فيه - يجب أن يكون لديك ملف جداً بنية الملف الصارمة التي تقوم بتعيين فئات إلى الملفات 1: 1 لكي تكون هذه مفيدة

  • __CLASS__ سيظهر لك النتيجة الخاطئة في حالة حدوث الخطأ في فئة موروثة. يستخدم get_class($this) للحصول على الفئة الحالية الفعلية.

بخلاف ذلك ، فإن استخدام هذه الثوابت مقبول تمامًا. لاحظ أن

  • __FUNCTION__ و __CLASS__ تمت إضافة في PHP 4.3

  • __METHOD__ متوفر منذ PHP 5.0.0

  • __DIR__ و __NAMESPACE__ متوفرة منذ PHP 5.3.

مستندات

نصائح أخرى

الغرض من هذه الثوابت هو تصحيح الأخطاء والتسجيل. هذا بالضبط ما تفعله.

__FILE__ يمكن أيضًا استخدامها لمسارات الملفات النسبية (على سبيل المثال dirname(__FILE__)).

النصيحة الوحيدة التي يمكنني تقديمها هي أنه لا يتم تعريف جميع الثوابت السحرية. لذلك ، عندما تكون في شك ، استخدم if(defined('__MAGIC_CONSTANT__'))

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top