"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > إنشاء جهاز توجيه أفضل: التعامل مع المدخلات المخفية وطلب الحذف

إنشاء جهاز توجيه أفضل: التعامل مع المدخلات المخفية وطلب الحذف

تم النشر بتاريخ 2024-07-31
تصفح:852

Creating a Better Router : Handling HIDDEN Inputs and DELETE request

منذ بضعة أيام، تعلمت كيفية إنشاء جهاز توجيه أساسي يقوم بتعيين عناوين URL لوحدات التحكم. الآن، أحتاج إلى تحسينه لإنشاء جهاز توجيه أفضل بوظائف متقدمة. لإنشاء جهاز توجيه أفضل يعمل مع المدخلات المخفية، عليك أولاً حذف ملف router.php الأساسي من المشروع وإنشاء ملف php جديد. لنبدأ.

مقدمة إلى التوجيه

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


إنشاء ملف جهاز التوجيه

لإنشاء ملف جهاز توجيه، علينا تهيئة فئة جهاز التوجيه بمساحة اسم، في هذه الحالة، Core.





الوظائف العامة (المعلمات المشتركة)

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

public function get($uri, $controller) {
 $this->add('GET', $uri, $controller); }
public function post($uri, $controller) {
 $this->add('POST', $uri, $controller); }
public function delete($uri, $controller) { 
$this->add('DELETE', $uri, $controller); }
public function patch($uri, $controller) { 
$this->add('PATCH', $uri, $controller); }
public function put($uri, $controller) { $this->add('PUT', $uri, $controller); }

إضافة طريقة

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

public function add($method, $uri, $controller) { 
  $this->routes[] = [ 
    'uri' => $uri, 
    'controller' => $controller, 
    'method' => $method 
  ]; 
}

طريقة الطريق

هنا، نحدد طريقة التوجيه لتحديد استجابة تطبيقنا لعنوان URL معين، وتعيينه إلى وحدة التحكم المقابلة للتعامل مع الطلب.

public function route($uri, $method) { 
  foreach ($this->routes as $route) { 
    if ($route['uri'] === $uri && $route['method'] === strtoupper($method)) { 
      return require base_path($route['controller']); 
    } 
  } 
  $this->abort(); 
}

وظيفة سترتوبر

في طريقة التوجيه، نستخدم الدالة strtoupper لتحويل سلسلة إلى أحرف كبيرة، مما يضمن تطابقًا غير حساس لحالة الأحرف.

strtoupper($method)

الوظيفة المحمية (إحباط)

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

protected function abort($code = 404) { 
  http_response_code($code); 
  require base_path("views/{$code}.php"); 
  die(); 
}

تعريفات الطريق

آخر شيء هو تحديد تكوين التوجيه في ملف Routes.php، وتعيين عناوين URL لإجراءات وحدة التحكم المقابلة.

$router->get('/', 'controllers/index.php'); 
$router->get('/about', 'controllers/about.php'); 
$router->get('/contact', 'controllers/contact.php'); 
$router->get('/notes', 'controllers/notes/index.php'); 
$router->get('/note', 'controllers/notes/show.php'); 
$router->get('/notes/create', 'controllers/notes/create.php');

تحدد طريقة الحصول طريقة الطلب (GET) ونمط عنوان URL وتعيينه إلى ملف وحدة تحكم.

خاتمة

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

أتمنى أن تكون قد فهمت الأمر بوضوح.

بيان الافراج تم إعادة إنتاج هذه المقالة على: https://dev.to/ghulam_mujtaba_247/creating-a-better-router-handling-hidden-inputs-and-delete-request-ei7?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ Study_golang@163 .com لحذفه
أحدث البرنامج التعليمي أكثر>

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

Copyright© 2022 湘ICP备2022001581号-3