سؤال

حسنًا ، قد يكون عنوان المنشور مربكًا بعض الشيء.

لدي هذا الرمز:

class A {
    public static foo() {
        return get_called_class();
    }
}

class B extends A {

}

class C {
    public function bar() {
        echo B::foo();
    }
}

الإخراج: ج

ما أريد الحصول عليه في FOO () هو اسم فئة B. كيف يمكنني القيام بذلك دون تغييرات في الفئة B؟

التحيات ، جان أوليفر

ملاحظة: __ فئة __ ، get_class () لا تعمل.

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

المحلول

قبل PHP 5.3 ، هذا غير ممكن بدون اختراقات ويعرف باسم الربط الثابت المتأخر ، وهو مصطلح googlable.

إذا كنت مهتمًا ، فإليك المقالة SO مع الإجابات: التزوير المتأخر ملزمة ثابت قبل 5.3 PHP

نصائح أخرى

أعتقد أنه يمكنك استخدام المدمج فئة الانعكاس من أجل هذا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top