اذهب إلى المحتوى
  • 0

لماذا نستخدم if class_exists في WordPress

حسين محمد الباز

السؤال

Recommended Posts

  • 0

يعتمد ذلك على إصدار PHP الذي تستخدمه. اعتبارًا من PHP 5.3.0، هذا ليس ضروريًا. بدلاً من ذلك، من الأفضل استخدام الـ Namespaces.

تدعم بيئات الاستضافة الحديثة PHP 5.3.0 على الأقل، إن لم تكن أعلى، ولهذا السبب، لا يتعين علينا استخدام class_exists إلا في بعض الحالات الخاصة جدًا، مثل إنشاء مكتبة Dependency Injection، وتعريف طريقة الـ dependency resolution، وهذه مواضيع معقدة لا يجب أن تشغل نفسك بها إلا عندما تتقن أساسيات اللغة أولاً.

يمكنك التفكير في الـ Namespace مثل حزمة مكونة من قطع فريدة. لا يمكن أن تكون هناك قطعتان متماثلتان في نفس الحزمة. لذلك، في أي كود حديث، مثل Laravel، ستلاحظ أنهم يستخدمون Namespaces بدلاً من class_exists، لأن الـ Namespaces ستتأكد دائمًا من وجود أو عدم وجود الـ class قبل أن يتم دمجه أو تعريفه في النطاق.

الطريقة القديمة:

<?php

if ( ! class_exists( 'MyClass' ) ) {
  class MyClass {}
}

الطريقة الحديثة:

<?php

namespace MyScope;

class MyClass {
}

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

class_exists هي وظيفة موجودة في php تستخدم للتحقق مما إذا كان قد تم تعريف الصنف أم لا, تستقبل معاملان , المعامل الأول اسم الصنف الذي نريد التحقق منه, والمعامل الثاني autoload الذي يحدد ما إذا كان سيتم استدعاء __autoload افتراضيًا أم لا, تسترجع الوظيفة true اذا كان قد تم تعريف الصنف,وتسترجع false اذا لم يتم تعريف الصنف, وبناء على القيمة التي تم استرجاعها نقوم بتنفيذ الأوامر.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 36 دقائق مضت قال محمد أبو عواد:

class_exists هي وظيفة موجودة في php تستخدم للتحقق مما إذا كان قد تم تعريف الصنف أم لا, تستقبل معاملان , المعامل الأول اسم الصنف الذي نريد التحقق منه, والمعامل الثاني autoload الذي يحدد ما إذا كان سيتم استدعاء __autoload افتراضيًا أم لا, تسترجع الوظيفة true اذا كان قد تم تعريف الصنف,وتسترجع false اذا لم يتم تعريف الصنف, وبناء على القيمة التي تم استرجاعها نقوم بتنفيذ الأوامر.

حسنا ولكن لماذا ذلك؟ لماذا نتحقق مما إذا كان موجود أم لا؟ كما هو الحال في Java أو Python لا نستخدم class_exists عندما ننشئ واحد جديد

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

في لغة php الدالة موجودة لكن أنت لست مُجبر على إستخدامها عند إنشاء أصناف PHP، بالعكس فالأمر متروك لك و تُستخدم عند حاجتك للدالة و في الوضعيات التي تحتاجها، فبنفس طريقة إنشائك للكلاسات في اللغات الأخرى مثل جافا او بايثون يُمكنك إنشاء الكلاسات في PHP بدون إستخدام الدالة class_exists فلا تحصر نفسك في سياق مُحدد و الدالة ليست موجودة لهذا الأمر فقط، قد تحتاج في جزئية مُحددة من الكود إلى إنشاء كائن من كلاس ما لكن إسم الكلاس هذا ليس معلوماً لديك قد يكون الكلاس موجود أو قد يكون غير موجود فالإسم يأتيك على شكل ديناميكي فهل ستقوم بإنشاء الكائن مُباشرة قد يعطيك خطأ لذلك يُمكن إستخدام الدالة  class_exists في هذه الحالة للتأكد من وجود الصنف قبل إنشاء كائن منه و إلا مُعالجة الأمر عن طريق رمي إستثناء او ما إلى ذلك و هذه حالة من الحالات. أعتقد انه حتى لو لم تُوفر اللغات التي ذكرتها دالة مُشابهة إلا انها وفرت طرق للحصول على نفس نتيجة الدالة. 

أعتقد أيضاً أن إستخدام الدالة في ووردبريس حتى لا يتم إنشاء كلاسات بنفس الأسماء مما قد يُشكل لك بعض المشاكل في التطبيق الخاص بك.

إحرص دائما على معرفة ما الذي تفعله الدالة و لا تُقيد نفسك بسياق واحد او إستخدام واحد للدالة و إنما فكر دائماً خارج الصندوق.

هناك أيضاً دوال مُشابهة مثل method_exists، function_exists تُوفرها لغة PHP.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...