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

إنشاء جهاز توجيه صفحة بسيط في PHP

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

إنشاء ملفات

أولاً، سنقوم بإنشاء ملفات Index.php وrouter.php و.htaccess.

قم بإعادة توجيه جميع الطلبات إلى ملف Index.php في ملف htaccess

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L,QSA]

منع من الوصول المباشر إلى router.php

سيظهر هذا الرمز استجابة 404 إذا أدخل المستخدم عنوان url للوصول إلى router.php مباشرة.

إضافة فئة الصفحة في router.php

class Page
{
  protected static bool $Return_404 = true;
}

قم بإنشاء متغير منطقي ثابت لإرجاع صفحة 404. سوف نقوم بتعيينه على صحيح كافتراضي.
الآن نضيف وظيفة لصفحة 404.

protected static function Return_404(): void
    {
       (file_exists("./Pages/404.php")) ?  require_once "./Pages/404.php" : http_response_code(404);
    }

هنا قمت بوضع صفحة 404 داخل مجلد الصفحات. يمكنك وضعه في أي مجلد تريده

سنضيف أيضًا وظيفة "الملف".

protected static function File(string $file): string
{
    if (!empty($file)) {
        (str_contains($file, "?")) ? $file = strtok($file, '?') : $file;
        ($file[strlen($file) - 1] === "/") ? $file = rtrim($file, "/") : $file;
    }
    return $file;
}

ستقوم هذه الوظيفة بالتحقق مما إذا كان عنوان URL للطلب يحتوي على سلسلة استعلام أو ينتهي بـ "/" وإزالته.
أستخدم دالة السلسلة "السكتة الدماغية" للحصول على قيم السلسلة قبل "؟". أعلم أن "السكتة الدماغية" ليس من المفترض استخدامها بهذه الطريقة ولكنها تعمل وتنقذني من القيام بخوارزميات معقدة دون داع. أستخدم وظيفة السلسلة "rtrim" لإزالة "/" إذا كانت موجودة في آخر السلسلة.

إضافة فئة الطرق في router.php

class Routes
{
    public static array $Route = array(
        "" => "Pages/home.php",
        "/about" => "Pages/about.php",
    );
}

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

أضف فئة جهاز التوجيه في router.php

ستمتد فئة جهاز التوجيه من فئة الصفحة التي أنشأناها بالفعل أعلاه.
لاحظ أن "" => "Pages/home.php"، مخصص للصفحة الرئيسية.

class Router extends Page
{

}

الآن، سنكتب الدالة التي تتحقق من وجود الملف المطلوب في فئة جهاز التوجيه.

   public static function Run(): void
    {
        $requested_file = self::File($_SERVER["REQUEST_URI"]);
        foreach (Routes::$Route as $request => $file) {
            if ($requested_file === $request) {
                if (file_exists($file)) {
                    self::$Return_404 = false;
                    require $file;
                } else echo "Error";
            }
        }
        if (self::$Return_404) self::Return_404();
    }

تقوم هذه الوظيفة بالتحقق من وجود الملف المطلوب في مصفوفة $Route أولاً. إذا كان موجودًا، فسيتم تعيين القيمة المنطقية الثابتة $Return_404 على false حتى لا تظهر صفحة 404 ولا تحصل على ملف الصفحة. إذا لم يكن موجودًا، فسيؤدي ذلك إلى إرجاع صفحة 404.
إذا كان موجودًا ولكن لا يوجد ملف في مجلد الصفحات، فستقوم الوظيفة بتكرار "خطأ". يمكنك عرض صفحة 404 بدلاً من صدى "خطأ" هنا.

سيبدو ملف router.php النهائي بهذا الشكل.

 $file) {
            if ($requested_file === $request) {
                if (file_exists($file)) {
                    self::$Return_404 = false;
                    require $file;
                } else echo "Error";
            }
        }
        if (self::$Return_404) self::Return_404();
    }
}
class Routes
{
    public static array $Route = array(
        "" => "Pages/home.php",
        "/about" => "Pages/about.php",
    );
}

الفهرس.php

في ملف Index.php، سنستخدم وظيفة "Run" من فئة جهاز التوجيه.


Router

ستكون كافة أكواد HTML من الصفحات موجودة في علامة "النص الأساسي".

إنشاء صفحات

أخيرًا، قم بإنشاء home.php، وabout.php، و404.php في مجلد الصفحات.

home.php

Home page

about.php

about page

404.php

404 page

تحقق مما إذا كان الرمز يعمل أم لا باستخدام ملحق "xampp" أو "خادم PHP".

إذا واجهت أي خطأ، فلا تتردد في إخباري. XD

يمكنك أيضًا التحقق من مستودع جيثب على:

Creating a simple page router in PHP توكيجين / جهاز توجيه الصفحة

جهاز توجيه يدوي من مستودع php-router

بيان الافراج تم نشر هذه المقالة على: https://dev.to/kohtet_gintoki/creating-a-simple-page-router-in-php-2hpf?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

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

Copyright© 2022 湘ICP备2022001581号-3