الحلول الموصى بها لإنشاء رد اتصال يقوم بسلسلة طرق و/أو خصائص متعددة؟

StackOverflow https://stackoverflow.com/questions/3893080

سؤال

نحن نعمل على واجهة نوع البناء تقوم بشكل أساسي ببناء قائمة للقيام بإدارة الكائنات الفردية (نظرًا لأننا نستخدم ActivereCord كائن == سجل قاعدة بيانات).

من أجل جعل تحديد قيم الأعمدة والمعلمات لخيارات القائمة مرنة ، قمنا في الأصل بتنفيذ وسيطات رد الاتصال كصفيف يشبه هذا:

'params' => array(
              'static' => $this->institution->id, 
              array(
                'method1' => array(
                                'method_name', 
                                array('arg1', 'arg2')
                             ), 
                             'prop1' => 'id')

يقدم هذا الحل بعض العيوب الواضحة فقط من حيث الإحراج ، وما إلى ذلك ولكنه نجح.

بناءً على اقتراح زميل في العمل ، حاولنا تنفيذ عمليات الإغلاق ولكن نظرًا لمتطلبات أخرى مع الفصل ، يتعين علينا تسلسل جميع البيانات في الفصل الذي اكتشفناه فقط لن يعمل مع الإغلاق. من الواضح أن بناء الجملة مع الإغلاق أكثر بساطة:

'params' => array(
               $this->institution->id,
               function($obj) { return $obj->method_name($arg1, $arg2)->id; }
             )

لذا فإن سؤالي الأول هو ما إذا كانت هناك طريقة لتخزين الإغلاق بتنسيق قابل للتسلسل (مثل السلسلة) ثم تحويله إلى الإغلاق بمجرد عدم التخصص في الفصل؟

أو هل يمكن لأي شخص تقديم اقتراح على واجهة أفضل لحل هذا النوع من مشكلة رد الاتصال؟

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

المحلول

هناك منشور ممتاز ومفصل حول كيفية استخدام الانعكاس لتمديد عمليات الإغلاق لفعل ما تريد: تمديد إغلاق PHP 5.3 مع التسلسل والانعكاس. ومع ذلك ، أتساءل عما إذا كان هذا أقل إحراجًا من الحل الأصلي ، حيث سيتعين عليك تمرير الكائنات بدلاً من ذلك - فهو يدوينه بشكل مختلف بشكل مختلف وقد ينتهي بك الأمر بضربة أداء.

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