"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية تمرير أساليب الفصل كرد اتصال: فهم الآليات والتقنيات

كيفية تمرير أساليب الفصل كرد اتصال: فهم الآليات والتقنيات

تم النشر بتاريخ 2024-11-06
تصفح:980

How to Pass Class Methods as Callbacks: Understanding Mechanisms and Techniques

كيفية تمرير أساليب الفصل كرد اتصال

الخلفية

في بعض السيناريوهات، قد تحتاج إلى تمرير أساليب الفصل كرد اتصال إلى وظائف أخرى لتحقيق الكفاءة تنفيذ مهام محددة. ترشدك هذه المقالة عبر الآليات المختلفة لتحقيق ذلك.

استخدام بناء الجملة القابل للاستدعاء

لتمرير دالة كرد اتصال، يمكنك تقديم اسمها مباشرة كسلسلة. ومع ذلك، هذه الطريقة لا تنطبق على أساليب الفئة.

تمرير أساليب المثيل

يمكن تمرير أساليب مثيل الفئة كرد اتصال باستخدام مصفوفة مع الكائن كعنصر أول واسم الطريقة باعتباره العنصر ثانية. يعمل هذا الأسلوب داخل الفصل نفسه وخارجه.

// Inside the same class
$this->processSomething([$this, 'myCallback']);
$this->processSomething([$this, 'myStaticCallback']);

// Outside the same class
$myObject->processSomething([new MyClass(), 'myCallback']);
$myObject->processSomething([new MyClass(), 'myStaticCallback']);

تمرير أساليب الفئة الثابتة

لا تتطلب أساليب الفئة الثابتة مثيل كائن. يمكن تمريرها مباشرة كمصفوفة تحتوي على اسم الفئة واسم الطريقة.

// Inside the same class
$this->processSomething([__CLASS__, 'myStaticCallback']);

// Outside the same class
$myObject->processSomething(['\Namespace\MyClass', 'myStaticCallback']);
$myObject->processSomething(['\Namespace\MyClass::myStaticCallback']); // PHP 5.2.3 
$myObject->processSomething([MyClass::class, 'myStaticCallback']); // PHP 5.5.0 

خيارات إضافية

بصرف النظر عن الطرق المذكورة، يمكنك أيضًا تمرير وظائف مجهولة كرد اتصال، ولكن هذا قد يتطلب تعديلات على بنية التعليمات البرمجية الخاصة بك.

بيان الافراج أعيد طبع هذه المقالة على: 1729345515 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3