في PHP ، لا يمكننا تنفيذ التحميل الزائد للطريقة مباشرةً بطرق تحمل اسم الطريقة نفسها والتوقيعات المختلفة ، لأن PHP هو نوع بيانات ضعيف ولا يمكنه التمييز بين التواقيع بشكل جيد. ومع ذلك ، يمكنك استخدام طريقة __call () في فئات PHP لتنفيذ التحميل الزائد للأسلوب. عندما يتم استدعاء طريقة غير موجودة في الفصل ، يتم استدعاء طريقة __call () تلقائيًا ، والتي هي في شكل __call (اسم $ ، وسيطات $) حيث اسم $ هو اسم الطريقة والسيطات $ هي معلمة نوع الصفيف.
المثال التالي هو استخدام تحميل طريقة PHP لإنشاء طرق GET وضبطها ديناميكيًا. (في البرمجة الموجهة للكائنات ، سيتم تعيين خصائص في الفصل باستخدام GET والتعيين ، ولكن إذا كان هناك الكثير من الخصائص في فصل ما ، مثل 30 ، إذا لم نستخدم الحمل الزائد للأسلوب ، نحتاج إلى كتابة 30 طريقة محددة و 30 طريقة الحصول عليها ، وكتابتها ببطء على ...)
نسخة الكود كما يلي:
<؟ PHP
شخص الطب
{
اسم $ الخاص ؛
عمر خاص ؛
عنوان $ الخاص ؛
مدرسة $ الخاصة ؛
Private $ phonenum ؛
الوظيفة العامة __call (طريقة $ ، $ args)
{
$ perfix = strtoLower (Sentrstr ($ method ، 0،3)) ؛
$ property = strtoLower (Sentstr ($ method ، 3)) ؛
إذا (فارغة ($ perfix) || فارغة (خاصية $))
{
يعود؛
}
إذا ($ perfix == "get" && isset ($ this-> $ property))
{
إرجاع $ هذا-> $ الخاصية ؛
}
إذا ($ perfix == "SET")
{
$ this-> $ property = $ args [0] ؛
}
}
}
$ p = شخص جديد () ؛
$ p-> setName ('lvcy') ؛
$ p-> setage (23) ؛
$ p-> setaddress (Chengdu) ؛
$ p-> setSchool ('uestc') ؛
$ p-> setphonenum ('123456') ؛
echo $ p-> getName (). '// n' ؛
echo $ p-> getage (). '// n' ؛
echo $ p-> getAddress (). '// n' ؛
echo $ p-> getSchool (). '// n' ؛
؟>
يمكن حل هذه المشكلة بسهولة عن طريق طريقة __call () ، بدلاً من كتابة طريقة Get Set لكل خاصية.