قد تواجه مواقف تحتاج فيها إلى تعديل فئة أو أساليبها دون خيار الميراث النموذجي. خذ على سبيل المثال الفئة التالية:
class third_party_library { function buggy_function() { return 'bad result'; } function other_functions(){ return 'blah'; } }
قد ترغب في استبدال طريقة buggy_function() بتطبيق مرغوب فيه أكثر، لكن القيام بذلك من خلال الوراثة ليس ممكنًا. لا يدعم PHP أصلاً تصحيح القرود، مما يسمح لك بتعديل الفئات بعد تعريفها.
&&&]أحد الحلول المحتملة هو استخدام مكتبة PECL runkit، التي توفر وظيفة runkit_method_redefine(). يسمح لك هذا بتعديل الأساليب من خلال تقييم سلاسل التعليمات البرمجية:runkit_method_redefine('third_party_library', 'buggy_function', '', 'العودة \'نتيجة جيدة\'' );runkit_method_redefine('third_party_library', 'buggy_function', '', 'return \'good result\'' );لكن هذا النهج له عيوبه. يمكن أن يكون تعديل التعليمات البرمجية من خلال تقييم السلسلة أمرًا خطيرًا وقد يكون تصحيح الأخطاء أمرًا صعبًا.
البديل الآخر هو التفكير في إضافة دالة إلى الفصل بدلاً من تعديل وظيفة موجودة. في بعض اللغات، مثل C#، يكون هذا ممكنًا باستخدام "الفئات الجزئية". ومع ذلك، من المهم ملاحظة أن هذا قد لا يكون ممكنًا بسبب قيود إطار العمل في حالتك المحددة.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3