كيف كتبت CMS سريعًا للمواقع الثابتة في إحدى الأمسيات وفقًا لقواعد منطق الأعمال في ملف واحد

ليس Wordpress وحده



ليس Wordpress وحده


لطالما كان سوق CMS مكانًا يحتل فيه Wordpress و Joomla و Drupal المراكز الثلاثة الأولى. هذه الأوقات الرائعة تمضي تدريجياً ، على الرغم من أن الفسفور الأبيض ، الذي يتباطأ في ديناميكيات ظهور مواقع جديدة ، لا يزال هو الرائد. لا عجب: مجتمع نشط ، عدد كبير من المكونات الإضافية. لكن ، لن يتم تخصيص هذه المقالة على الإطلاق لـ "النجوم الصاعدة" في سوق أنظمة إدارة المحتوى (مرحبًا ، الحلول المستندة إلى Laravel). بدلاً من ذلك ، حتى موضوع اهتمامنا سيكون "المادة السوداء" ، والتي تكون إلى حد ما جانبًا. وهي - لفة الأسطوانة ...



المواقع الثابتة



CMS للمواقع الثابتة



من يحتاج احصائيات في 2k20؟



سؤال عقلاني! يبدو أن أيام الإنترنت عبر الهاتف و Windows95 قد انقضت بالفعل ، لكن الطلب على إنشاء كود HTML الثابت بدأ يكتسب الزخم مرة أخرى. والشركة الجيدة هي المسؤولة بالطبع. Google PageSpeed ​​هو Urfi العظيم والرائع ... بشكل عام ، أصبح مقياس أداء صفحة الويب هذا هو المحرك لتقدم الإنترنت في العالم وصداع جميع مطوري الويب ، وأكثر من ذلك بالنسبة للعاملين لحسابهم الخاص. تستند نتائج القياس لهذه الأداة إلى معايير Google ، ومن المعروف أن هذه هي أساس التصنيف. وبشكل موضوعي ، يؤدي تحميل صفحة لأكثر من ثلاث ثوانٍ تلقائيًا إلى زيادة عدد مرات الارتداد. وبالتالي ، تصبح الإحصائيات أحد الحلول البديلة لاستبدال أو بالإضافة إلى التجميع الديناميكي للصفحات بقوة أي نظام إدارة محتوى أو إطار عمل أو خيارات مكتوبة ذاتيًا.



,



في الخدمة ، أنا منخرط في خدمة العديد من المشاريع ، من بينها محللون ، ولكن أيضًا حلول في مجال التجارة الإلكترونية. أنا لا أشكو من الحياة ، لكن مشكلة لم تنشأ من فئة "الصف الثاني ، المدرسة الابتدائية". أنا ، بصفتي مطورًا ومديرًا (وأدير عملي الصغير ، كما تعلم ، يتطلب مهارات من هذا المجال أيضًا) ، كما هو الحال في البولندية "dostałem się do martwego k gotta" (دخلت في ركن بعيد ، في كلمة واحدة). الشرط هو التالي: تحتاج إلى كتابة حل في غضون أيام قليلة يكون من السهل تثبيته وخدمة أي عدد من الصفحات الثابتة. علاوة على ذلك ، يجب أن يكون المسؤول قادرًا على إزالة مثل هذا الحل وإضافته بسرعة إلى أي مشروع عبر اتصال FTP / SFTP ، أو حتى إذا لم يكن لديه إمكانية الوصول إلى FTP / SFTP. من ناحية أخرى ، كان الشرط هو أن أقل إصدار هو PHP 5.6 ويجب دعمه بشكل جيد مثل أي إصدار أحدث.



ينبغي على المسؤول



  1. حذف / إضافة / تغيير الصفحات باستخدام لوحة الإدارة ؛
  2. بحث عالمي وسريع في محتوى الصفحات (مع مراعاة الترميزات واللغات المختلفة ؛
  3. البحث عن طريق أسماء الملفات ؛
  4. حذف / إدراج / تغيير العناصر الضرورية في جميع الصفحات بنقرة واحدة من لوحة الإدارة ؛
  5. يجب أن يكون الحل سهل التثبيت وإلغاء التثبيت.


يجب ألا يسمح الأمان باستخدام حقن SQL أو أي محاولات أخرى للتدخل في العمل.



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



جمهورية التشيك ، المساء ، الصيف ، القهوة



الأمسيات الهادئة للغاية في الجبال العملاقة تساهم فقط في الكسل. لكن ، كما يقول المثل القديم ، من لا يعمل ...



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



ونعم ، اللعنة ، قررت أن أنقل إلى ملف واحد النهج المعمول به بالفعل في معظم الأطر - مفهوم OOP و MVC.



من وجهة نظر الأداء ، قد تكون الإجرائية هي الخيار الأفضل ، ولكن:



  • دعونا لا ننسى جانب احتياجات العملاء المتزايدة والحاجة الموازية لإضافة إمكانيات جديدة إلى واجهات تطبيق الويب الخاص بنا ؛
  • — , , ;
  • — , “ ” , - -, -.


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



الهيكلة



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



ما هو الحل؟



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



/*
* This is the part for routing
*Additional information...
*/


التسمية الوظيفية - تم تسمية طرق الفئات وفقًا لممارسة حالة الجمل وتتوافق مع دور وظيفي ، على سبيل المثال "checkAdminCredentials" هي صياغة أكثر من مفهومة لطريقة ما.



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



كيف يتم التوجيه؟



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



استنادًا إلى المشكلة المذكورة أعلاه ، جعلت فئة التوجيه بدائية إلى حد ما ، ولكنها وظيفية. يعمل التوجيه باستخدام طلبات GET - بالطبع ، ليس ممتعًا تمامًا من الناحية الجمالية ، ولكن الحاجة الفورية للتنفيذ السريع هي حلول 100٪. أصبح جهاز التوجيه هو نقطة الدخول الوحيدة لتطبيق الويب (أي لوحة الإدارة) ، والتي ، في رأيي ، هي الحل الأمثل لسهولة التطوير. في هذه الفئة ، يتم تجميع الواجهة الأمامية والخلفية لتطبيق الويب ويتم إخراج HTML الناتج عن طريق الإرجاع.



سؤال: هل كتبت الدراجة؟



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



مثال واضح على الأداء



أحد أنظمة إدارة المحتوى المشهورة جدًا ، والذي لا يُطلق عليه عادةً اسم:







الحل الخاص بي: من







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



سوف يكون هناك تتمة؟



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



All Articles