في بعض السيناريوهات، قد تحتاج إلى تمرير أساليب الفصل كرد اتصال إلى وظائف أخرى لتحقيق الكفاءة تنفيذ مهام محددة. ترشدك هذه المقالة عبر الآليات المختلفة لتحقيق ذلك.
لتمرير دالة كرد اتصال، يمكنك تقديم اسمها مباشرة كسلسلة. ومع ذلك، هذه الطريقة لا تنطبق على أساليب الفئة.
يمكن تمرير أساليب مثيل الفئة كرد اتصال باستخدام مصفوفة مع الكائن كعنصر أول واسم الطريقة باعتباره العنصر ثانية. يعمل هذا الأسلوب داخل الفصل نفسه وخارجه.
// 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
بصرف النظر عن الطرق المذكورة، يمكنك أيضًا تمرير وظائف مجهولة كرد اتصال، ولكن هذا قد يتطلب تعديلات على بنية التعليمات البرمجية الخاصة بك.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3