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

كيف يمكن عمل method chaining في صنف Class في PHP؟

Emad Saif

السؤال

أجد في بعض المكتبات أنه يمكن إستدعاء أكثر من تابع بشكل متتالي، بحيث يتنهي التابع الأول من التنفيذ ويبدأ التابع الثاني بشكل مباشر بدون الحاجة إلى الإضافة إلى الكائن Object في كل مرة :

$obj = new ObjectWithMethods();
$obj->doSomething()->doSomethingElse();

كيف يمكن إضافة مثل هذه الميزة إلى صنف Class في PHP؟

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

Recommended Posts

  • 1

يمكن عمل هذا الأمر بشكل بسيط للغاية في PHP، فكل ما عليك فعله هو إرجاع نفس الكائن في نهاية كل تابع:
على سبيل المثال إن كان لدينا الصنف التالي:

<?php

class MyClass
{
    public function doSomething() {
        // ...
    }

    public function doSomethingElse() {
        // ...
    }
}

يجب فقط إرجاع نفس الكائن في نهاية كل تابع عبر الكلمة this$:

<?php

class MyClass
{
    public function doSomething() {
        // ...
      return $this;
    }

    public function doSomethingElse() {
        // ...
      return $this;
    }
}

بهذا الشكل يمكن إستخدام التوابع كما يلي:

$obj = new MyClass();
$obj->doSomething()->doSomethingElse();

لاحظ أن هذه الطريقة لا يمكن عملها إن كان يجب إرجاع شيء مُحدد من أحد التوابع.

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

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...