ما هو SunMvc؟
كل مشروع يُبنى على SunMvc يبدأ من نفس القالب الفارغ: التوجيه، والمتحكمات والنماذج والعروض، والمصادقة، والتدويل، ومعالجة الأخطاء، كلها موصولة ومختبرة بالفعل، دون أي كود خاص بتطبيق معين. بدلاً من بناء حزمة تقنية جديدة من الصفر في كل مرة، تبني مشروعك التالي مباشرة فوق أساس يعمل بالفعل، وكل درس مستفاد من مشروع سابق (إصلاحات التوجيه، تدفق المصادقة، آلية صفحة الخطأ) يُعاد دمجه في القالب للمرة القادمة.
كيف يتدفق الطلب
يمر كل طلب عبر مسار واحد يمكن تتبعه: يعيد ملف htaccess. كتابة كل رابط إلى index.php، الذي يحمّل بيئة التشغيل ثم يُنشئ بترتيب ثابت خدمات قاعدة البيانات والمصادقة والتصفية والترجمة، قبل أن يسلّم التحكم إلى المتحكم الخاص بك. وبحلول وقت تشغيل الكود الخاص بك، يكون التوجيه قد تم تحليله بالفعل، واللغة قد تم تحديدها بالفعل، وحماية CSRF قد تم التحقق منها بالفعل في كل طلب POST؛ أنت تكتب الميزة، لا الأسلاك المحيطة بها.
المتحكمات، النماذج، العروض
تتبع المتحكمات والنماذج والعروض نفس البنية التي يمكن التنبؤ بها في جميع أنحاء المشروع: فئة متحكم واحدة لكل جزء من الرابط، وفئة نموذج واحدة للوصول إلى بياناته، وملف عرض واحد لكل متحكم وليس لكل شاشة. المتغيرات المحلية للمتحكم مرئية مباشرة داخل عرضه؛ لا حاجة لتعلم آلية منفصلة لنقل بيانات العرض، ولا محرك قوالب تصارعه.
المصادقة والأمان مدمجان
تأتي المصادقة كاملة، وليست تمرينًا يُترك للقارئ: تسجيل الدخول، والتسجيل، وإدارة الجلسات، وإعادة تعيين كلمة المرور، والمصادقة الثنائية TOTP، كلها تعمل مباشرة اعتمادًا على مخطط قاعدة بيانات موثّق. تعمل حماية CSRF تلقائيًا في كل طلب POST. المجلدات الحساسة محظورة من الوصول المباشر على مستوى خادم الويب، وليست متروكة لكود التطبيق لفرضها.
التدويل الذي تستخدمه الآن
يمر كل نص مرئي في الإطار عبر نفس طبقة الترجمة التي تقرأها الآن؛ هذه الصفحة نفسها تُعرض باللغة التي اخترتها، باستخدام دوال الإطار الخاصة _t و _tr وجدول ترجمة مسطّح بصيغة JSON. إضافة لغة جديدة تعني إضافة رمز وملف ترجمة فقط؛ لا حاجة لأي تعديل في الكود.
مكتبة فئات Sun*
مكتبة صغيرة من الفئات المستقلة عن الإطار تتولى ما يحتاجه كل مشروع؛ المصادقة، وأداة بناء استعلامات قاعدة بيانات سلسة، وتنقية المدخلات، وإرسال البريد، والتحقق المرئي CAPTCHA، وتوليد خرائط الموقع، مفصولة عمدًا عن محرك التوجيه ليتمكن كل جزء من التطور بشكل مستقل.
روابط متوافقة مع تحسين محركات البحث (SEO)
كل رابط متوافق مع محركات البحث افتراضيًا: يعيد ملف htaccess. كتابة المسارات النظيفة مثل en/blog/show/42/ مباشرة إلى المتحكم الخاص بك، دون تشتت في سلسلة الاستعلام. أما المحتوى الذي يستحق رابطًا مقروءًا، مثل عنوان مقال أو اسم منتج، فتقوم الدالتان _s و slugId بدمج معرّف السجل مع نسخة مبسّطة من العنوان في جزء رابط واحد (.../blog/show/42-hello-world)؛ ولأن المطابقة تتم دائمًا على المعرّف فقط، يستمر الرابط في العمل حتى بعد تغيير العنوان. تولّد SunSitemap، وهي جزء من مكتبة فئات Sun*، ملفات sitemap.xml وsitemap-index.xml وrobots.txt مباشرة من مساراتك، ليتمكن محركات البحث من الزحف إلى مشروعك وفهرسته دون أي أدوات إضافية.
موثّق، مجلدًا بمجلد
كل مجلد بنيوي في النظام - Core وSystem وApp/Controllers وApp/Models وApp/Views وApp/Lang وPublic - يأتي مع ملف README.md خاص به يشرح بالضبط ما الموجود هناك وكيفية توسيعه، مع أمثلة حقيقية مأخوذة من الكود الفعلي العامل لهذا القالب، لا مقتطفات افتراضية.
مصمم للبرمجة بمساعدة الذكاء الاصطناعي
صُمم SunMvc ليُقرأ من قِبل أدوات البرمجة بالذكاء الاصطناعي، لا من البشر فقط؛ افتح مجلد المشروع في محرر مثل VS Code، ووجّه إليه مساعد ذكاء اصطناعي - Claude أو GitHub Copilot أو Cursor أو Windsurf أو Gemini CLI - ودعه يقرأ ملفات README.md المنتشرة في شجرة المجلدات، ثم صِف النظام الذي تريد بناءه. يمكنه بناء فكرتك مباشرة فوق أساس SunMvc المفتوح بالفعل في مساحة عملك.
أداة استعلام واحدة، أي قاعدة بيانات
يمر كل استدعاء لقاعدة البيانات في SunMvc عبر فئة واحدة مطوّرة خصيصًا، SunDB؛ أداة بناء استعلامات واحدة سلسة تتحدث MySQL وMSSQL وSQLite على حدٍّ سواء. غيّر المشغّل (driver) في مصفوفة إعداد واحدة، وسيستمر كل شيء بالعمل تمامًا كما كان: select()/insert()/update()/delete()، وpaginate() للنتائج المقسّمة على صفحات، وbackup() لأخذ نسخة احتياطية SQL بأمر واحد، وmaintenance() لتحليل وفحص وتحسين وإصلاح كل جدول، إضافة إلى المعاملات (transactions) ومساعدات الربط (joins) - دون إعادة كتابة أي استعلام ودون مسارات كود منفصلة لكل مشغّل.
جاهز لـ SEO وGEO وAIO وSGE وLLMO وAEO
صُممت هذه الصفحة لتحقيق توافق كامل مع SEO (Search Engine Optimization) وGEO (Generative Engine Optimization) وAIO (Artificial Intelligence Optimization) وSGE (Search Generative Experience) وLLMO (Large Language Model Optimization) وAEO (Answer Engine Optimization)؛ ملف sitemap.xml موسوم بـ hreflang وروابط أساسية (canonical) للبحث التقليدي، وملف robots.txt يرحّب صراحة بـ GPTBot وClaudeBot وPerplexityBot وغيرها من زواحف الذكاء الاصطناعي، وملخص llms.txt مكتوب لوكلاء الذكاء الاصطناعي، وبيانات JSON-LD المُهيكلة التي تتيح لمحركات الإجابة استخلاص حقائق دقيقة بدلاً من تحليل النص.
ابدأ الآن
استنسخ القالب، وانسخ ملف env.example. إلى env. مع بيانات اعتماد حقيقية لقاعدة البيانات، ثم استورد المخطط، واختر اللغات التي تريد دعمها. لا توجد خطوة بناء، ولا ملف قفل لمدير الحزم يجب مصارعته؛ يوجد تدفق مصادقة يعمل ونظام تدويل موصول بالكامل منذ الطلب الأول.
التنزيل من GitHub