سؤال

في الأساس لدي مجموعة من الروابط على الصفحة وسأستخدم شيئًا كهذا

<?PHP echo $SITE_PATH ?>

عدة مرات على نفس الصفحة ولكنها ستظهر إشعارًا في PHP للقيام بذلك.

أعلم أنك من المفترض أن تستخدم أشياء مثل isset () لكن هل سأحتاج حقًا إلى استخدامه في كل مرة أتصل فيها؟

<?PHP echo $SITE_PATH ?>

--- تعديل :
إذا قمت بالتبديل إلى استخدام متغير محدد ، فيبدو أن الإشعارات تختفي

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

المحلول

حلان هنا:

  • فقط استخدم المتغيرات الموجودة - وهو ما يجب عليك فعله.
  • أو اختبار إذا كانت موجودة (مع isset) قبل محاولة استخدامها.

لا يوجد سحر ^ ^

إذا كان تطبيقك يستخدم العديد من المتغيرات غير المحددة ، فربما يكون لديك بعض المشكلات في التصميم الخاص بك.


في حالة مثل الحالة التي قدمتها ، لمتغير يستخدمه عدة مرات ، أود أن أتأكد من وجوده ، وإذا لم يكن الأمر كذلك ، قم بتعيينه على "" ، على سبيل المثال ، في بداية البرنامج النصي.

هذا لا يبدو رائعًا حقًا ، لكنه سيعمل - وبهذه الطريقة ، لن تضطر إلى المرور عبر تطبيقك بالكامل ، وتصحيح كل شيء.

(أو قد أقوم أيضًا بتعطيل E_NOTICE error_reporting المستوى - لا أحب هذه الفكرة ، ولكن في بعض الأحيان ، إنها حقًا الطريقة الوحيدة للتعامل مع بعض قواعد التعليمات البرمجية)

نصائح أخرى

يمكنك قمع الرسائل باستخدام @:

print @$site_path;

أو يمكنك استخدام عملية ثلاثية للحصول على قيمة افتراضية:

print (isset($site_path)) ? $site_path : "default_path" ;

في النهاية ، يجب ألا تستخدم المتغيرات التي لم يتم تعيينها. إذا كنت كذلك ، فأنت بحاجة إلى إعادة التفكير في نهجك. تعامل مع هذه المعلومات مقدمًا ، بحيث يمكن تشغيل بقية البرامج النصية دون مشاكل مثل هذه.

يجب عليك حقًا التأكد من تعيين متغير قبل استخدامه (خاصةً صدىه للصفحة). إذا كان المتغير يأتي من مصدر غير آمن ($ _get ، $ _post ، قاعدة البيانات) ، فيجب عليك القيام ببعض الفلتر لمنع خرق الأمان (برنامج البرمجة النصية للموقع (XSS) ، وتزوير طلب الموقع (CSRF) ، وما إلى ذلك .. .) ولكن إذا كنت تشعر أن كل شيء آمن ولا ترغب في إظهار الأخطاء (على سبيل المثال في الإنتاج) ، قم بتعيين خطأ في الإبلاغ عن 0.

على سبيل المثال error_reporting(0);

يمكنك القيام بذلك على مستوى php.ini أو لكل صفحة (تعيين error_reporting(0); في الجزء العلوي من الصفحة).

في ملاحظة جانبية ، عندما لا ترغب أبدًا في عرض أخطاء. قم بتسجيلها بدلاً من ذلك. في التطوير ، تريد رؤية كل أخطاءك (E_strict).

يمكنك إنشاء وظيفة للتحقق مما إذا تم تعيين المتغير وإعادته:

function EchoVar() {
    global $SITE_PATH;
    return isset($SITE_PATH) ? $SITE_PATH : '';
}

// calling it
echo EchoVar();
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top