سؤال

بقدر ما تنص على أفضل الممارسات؟ لدي تعليق تعليقات + نموذج يحتاج إلى استدعاؤه في عنصر تحكم عناصر وملامح. تحكم وحدة التحكم التعليقات تلقائيا نموذج التعليقات.

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

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

كل ما تريده خبراء MVC! =)

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

المحلول

عموما، سأذهب لنهج "نموذج الدهون".

لست متأكدا من الكود الذي تشعر بالقلق حقا بشأن التكرار.

هناك عدة طرق يمكنك القيام بذلك:

الطريقة الأولى: - استجواب نموذج تعليقاتك لإرجاع بعض التعليقات. - اجتياز بيانات التعليق في وجهة نظرك. - تقديم التعليقات في الرأي، وربما استخدام بعض مساعد العرض

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

أنا أفضل الطريقة الثانية. بعض الناس لديهم مشكلة في ترك طبقة وجهة نظرهم تتحدث إلى النموذج (بطريقة للقراءة فقط!)، لكنني لست واحدا منهم.

نصائح أخرى

إذا كنت تستخدم Kohana 3، فيمكنك الاستفادة من ميزة HMVC. يمكنك تنفيذ وحدات التحكم داخل وحدات التحكم.

http://forum.kohanaphp.com/comments.php؟discussionid=2768.

تحقق الرابط أعلاه لبعض الأمثلة

أود أن أقول ذلك يعتمد على عودة المراقب الخاص بك.

إذا كانت وحدة التحكم الخاصة بك يمكن أن تعيد DTOS / النماذج، فمن المؤكد، استدعاء وحدة تحكم فكرة جيدة.

تحدد وحدة التحكم الخاصة بك نقاط دخول صارمة وثابتة ونأمل أن تدخل وظيفتك. لذلك، يمكنك تجاهل تنفيذ التعليقات بالكامل، أو تغييره في الإرادة، طالما أنك لا تغير توقيع طريقة وحدة التحكم.

ومع ذلك، إذا كانت وحدة التحكم الخاصة بك غير قادر على إرجاع البيانات الخام، فمن المؤكد أنها تولدها، لأنك تحصل على HTML (أو علامات أخرى) في المقابل. هذا يعني أن عليك أن تتضطر إلى أنابيب HTML مباشرة في طريقة العرض التي تريدها، أو استخراج البيانات منه. كلاهما فكرة سيئة.

يتضمن الأنابيب HTML RAW أنه إذا قمت بتغيير طريقة العرض للحصول على تعليقات، فإن عرض التعليقات على وحدة الملف الشخصي سيتغير حتما. قد يكون هذا ما تريده، لكنني سأذهب للمرونة.

الآن، إذا كنت تريد البيانات، فسيتعين عليك استخراج البيانات من العلامات التي تم إرجاع رأيك، وهو ثقيل ومكافحة مثمر.

إذا كنت تحاول استدعاء طريقة ثابتة، فيمكنك فقط استدعاء الوظيفة مباشرة. على سبيل المثال:

class Controller_User extends Controller {
    public static function format_user($user){
        return array("data" => $user->getData());
    }
}

class Controller_Foo extends Controller {
    public function action_index(){
        $user = get_user_data_some_how();
        $user_data = Controller_User::format_user($user)
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top