الذي تحكم في هذه السيناريوهات في mvc تطبيقات الويب ؟

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

سؤال

1) أين الصفحة الرئيسية من موقع الويب الخاص بك تنسجم مع "تحكم"?لقد رأيت بعض الناس استخدام "صفحة" تحكم التعامل مع صفحات ثابتة مثل, حول, الصفحة الرئيسية, اتصل, الخ., لكن بالنسبة لي هذا لا يبدو مثل فكرة جيدة.من شأنه خلق متميزة تحكم فقط على الصفحة الرئيسية الخاصة بك يكون الخيار الأفضل ؟ بعد كل شيء, قد تحتاج إلى الوصول إلى نماذج متعددة و لا تتدفق بشكل جيد مع كل واحد تحكم في نموذج نظرية أن بعض الناس استخدام.

2) إذا كنت في حاجة الى لوحة التحكم لأنواع متعددة من المستخدمين, من شأنه أن يكون واحد لوحة تحكم شأنها تبديل رمز تعتمد على أي مستخدم أو هل أقول لوحة عمل داخل كل وحدة تحكم لكل مستخدم ؟ على سبيل المثال, المشرف/لوحة تحكم الحساب/لوحة أجهزة القياس ، وما إلى ذلك.

3) يبدو لي أن استخدام بسيط كله الخام على سبيل المثال تعمل مثل السحر عند محاولة شرح وحدات تحكم, ولكن مرة واحدة يمكنك الحصول على الماضي تلك وظائف بسيطة ، فإنه ينهار ويمكن أن يسبب وحدات التحكم الخاصة بك للحصول على عملي.لماذا يختار بعض الناس إلى إنشاء تسجيل الدخول تحكم عندما تجعل الآخرين تسجيل الدخول في وظيفة مستخدم تحكم ؟ أحد الأسباب أعتقد أن الكثير منا تأتي من صفحة نهج الخلفية ومن الصعب التفكير في وحدات تحكم باسم "الأجسام" أو "الأسماء" لأن الصفحات لا تعمل دائما على هذا النحو.مثال لماذا كنت ترغب في إنشاء "الصفحات" التي تحكم التعامل مع الصفحات التي حقا لها علاقة مع بعضها البعض فقط أن يكون "الحاوية" إلى صالح الأعمال في.فقط لا يبدو الحق.

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

وحدات تحكم لا ينبغي أن يكون هذا الخلط ربما, ولكن لسبب ما يربك لي من الجحيم.أي تعليقات مفيدة سيكون موضع تقدير كبير.

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

المحلول

1) يمكنني استخدام بسيط البيرة مجموعة من الدروس عن بعض الاشياء MVC ، ويتعلق تحكم الأسماء إلى العمل وعرض أسماء (أنها تحكم الجبهة نمط مماثل زند).عامة الموقع, دعونا نفترض أنه يحتوي على الصفحة الرئيسية, سياسة الخصوصية, اتصل صفحة صفحة حول.أنا حقا لا تريد أن تجعل منفصلة تحكم كل هذه الأشياء, لذا سأبقى لهم داخل بلدي IndexController, مع وظيفة أسماء مثل actionIndex(), actionPrivacy(), actionContact(), ، actionAbout().

للذهاب جنبا إلى جنب مع أنه داخل آرائي دليل لدي دليل من القوالب المرتبطة بكل عمل.بشكل افتراضي ، أي العمل تلقائيا بالبحث عن المرتبط قالب, على الرغم من أنه يمكنك تحديد واحد إذا كنت ترغب في ذلك.لذلك actionPrivacy() سوف ابحث عن ملف قالب في index/privacy.php, actionContact() سوف ابحث عن index/contact.php, ، وما إلى ذلك.

طبعا هذا يتعلق عناوين كذلك.حتى url ضرب http://www.example.com/index/about تشغيل actionAbout(), الذي من شأنه تحميل عن قالب الصفحة.منذ حوالي الصفحة تماما محتوى ثابت ، actionAbout() لا يفعل شيئا على الاطلاق ، وغيرها من توفر العمل العام للجبهة تحكم لرؤية وتشغيل.

لذا للإجابة على جوهر السؤال ، أضع متعددة "الصفحات" في وحدة تحكم واحدة, و أنه يعمل بشكل جيد لأغراض بلدي.نموذج واحد لكل وحدة تحكم نظرية أنا لا أعتقد أنني سوف تحاول أن تتبع عند العمل مع ويب MVC, كما يبدو لتناسب التطبيق مع الدولة أفضل بكثير.

2) هذا لكنت وحدات تحكم متعددة.باتباع نفس أساليب استخدام أعلاه, كنت /admin/dashboard و /account/dashboard كما تقترح ، على الرغم من أن ليس هناك سبب لا يمكنهم استخدام نفس (أو أجزاء من نفسه) قوالب.

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

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

أود أن أقترح استخدام بعض من PHP ORM أطر هناك الخام.فإنها يمكن أن تفعل بعيدا مع الكثير من المتاعب في الحصول على لطيفة التنفيذ.

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

4) أنت على حق حول الفسحة.يمكنك بسهولة إنشاء وحدة تحكم التعامل مع كل شيء التطبيق الخاص بك/الموقع يريد القيام به.ومع ذلك, أعتقد أنك سوف نتفق على أن هذا من شأنه أن تصبح صيانة كابوس.أنا لا يزال الحصول على jibbly-jibblies التفكير في الماضي وظيفة في شركة أبحاث السوق ، حيث الداخلية PHP التطبيق تم من قبل في فريق في الخارج مع ما يمكن أن نفترض فقط كان القليل من التدريب.نحن نتحدث عن 10,000 خط النصوص التي تعاملت مع الموقع بأكمله.كان من المستحيل للحفاظ على.

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

على سبيل المثال

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

IndexController - مقابض عن صفحة سياسة الخصوصية عامة عن محتوى ثابت.

UserController - مقابض إنشاء حساب, تسجيل الدخول/الخروج ، تفضيلات

PictureController - عرض الصور, التعامل مع الملفات المرفوعه

ForumController - ربما ليس كثيرا, كنت في محاولة لدمج خارجي المنتدى الذي يعني لن تحتاج إلى الكثير من وظائف هنا.

LibraryController - عرض قوائم الأخبار الأخيرة و البحوث

HugAManateeController - الظاهري خروف البحر تعانق في الوقت الحقيقي عبر HTTP

التي ربما يعطيك أساسية على الأقل الانفصال.إذا يمكنك العثور على وحدة تحكم أصبحت كبيرة للغاية, ربما حان الوقت لكسر مجال الأعمال التجارية في تحكم منفصلة.

وسوف تكون مختلفة بالنسبة لكل مشروع ، لذلك قليل من التخطيط يقطع شوطا طويلا نحو ما نوع الهيكل المعماري عليك.

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

على أمل أن يساعد.

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