سؤال

سؤال بسيط ... أستخدم بنية MVC لبناء موقعي (كبير إلى حد ما، لذلك فإنه يساعد في الصيانة. لقد بدأت الآن في دمج بعض وظائف Ajax متعددة المرح لتنشيط الأشياء في جافا سكريبت / AJAX.

منذ أن أنا شرجي عن التنظيم، أريد تخزين معالجاتي AJAX PHP بطريقة منطقية وآمنة و (نأمل) منفصلة.

كيف تنظم لك؟ هل هناك أفضل الممارسات؟

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

المحلول

بالنسبة لي، أفضل حل هو الحصول على وحدة تحكم أمامية index.php التي تعالج كل من طلبات توليد الصفحات وطلبات AJAX، وهي نفس الملفات التي تنشئ صفحات تفعل أشياء ajax لك، حتى إعادة تحميل القوالب والوحدة النمطية.

الذي يبسط كل شيء ولديك هيكل موحد.

نصائح أخرى

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

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

class IndexController extends BaseMvcController{
    public function indexAction(){}

    public function ajaxuserinfoAction(){}
}

//أو

class AjaxController extends BaseMvcController{
    public function userinfoAction(){}
}

لا تزال تترك كيفية التعامل مع جزء عرض طلبك. لقد أصبحت معجبا كبيرا لإنشاء كائنات Stdclass ثم استخدام echo json_encode($object); مع header('Content-Type: application/json');.

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

protected function outputJsonForAjax($object)
{
    header('Content-Type: application/json');
    echo json_encode($object); 
    exit;
}

يتم تخزين الألغام في مجلد محدد _ajaxHandlers, ، يحتوي هذا المجلد على ملفات مثل updatePageList.php, deletePage.php, etc).

لست متأكدا من أن هذه هي أفضل طريقة للقيام بذلك لأنني أيضا NELATIVLY جديدة في مفهوم Ajax :) أي اقتراحات للحصول على أفضل ملفات تخزين / المناولة، من قبل لي.

السفل في دير الاسم هو لأنني أحب المجلدات الأبجدية المدرجة مرتبة حسب الغرض منها. في هيكل بلدي أكد أسماء الكمبات تعتبر SystemDirs.

أنا أفعل نفس الشيء أيضا، سابقا اعتدت على تخزين معالجات أياكس مع بادئة AJAX - بادئة

ajax-updatestatus.php
ajax-managemessages.php

ولكن مؤخرا انتقلت إلى استخدام مجلد جديد

إذا كنت تستخدم JQuery أو Framwork، فيمكنك التمييز بين الطلبات الأصلية باستخدام رأس $ _Server ['HTTP-X- طلب طلب "بواسطة أساليبك الحالية. بهذه الطريقة لديك AJAX وطلب عادي في نفس المكان، لذلك لا يوجد تغيير بندي.

ماذا عن كل مكالمة AJAX لديها معرف (يجب أن توثق بطريقة ما إذا كان لديك الكثير منها) وجميع المعالجين موجودون في ملف واحد مع حلقة حالة تبديل الحمار ضخمة إذا كان سيتم تنظيم ملف كبير لهم في عدد قليل من الملفات - معرف 3001، 3002، 3003 يتصل النموذج الذهاب إلى Formhandler.php ID 4001 400N انتقل إلى نظام التخطيط وهلم جرا.

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