أفضل الممارسات لاستخدام الثوابت السحرية لـ PHP
-
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__'))