۷ آرمین صادقیان
کار نکردن متد findRoute
جامعه پی اچ پی ایجاد شده در ۱۰ تیر ۱۴۰۱

سلام. وقت بخیر

من متد findRoute رو دقیقا مثل کدهای ویدیو مینویسم:

private function findRoute(Request $request)
{
    // echo $request->getMethod() . " " . $request->getUri();
    foreach ($this->routes as $route) {
        if (in_array($request->getMethod(), $route['methods']) && $request->getUri() == $route['uri']) {
            return $route;
        }
        return false;
    }
    return null;
}

ولی بازم ارور زیر و میده :

 Warning: Undefined array key "methods" in C:\\xampp\\htdocs\\MVC-Micro-Framework\\app\\Core\\Routing\\Router.php on line 24

هرچی کدهامو بررسی کردم نتونستم حلش کنم

سلام آرمین عزیز

خط ۲۴ فایل روتر چیه که خطا داره؟

چون مگه کلید methods رو نمیشناسه

اینو die کن و بررسی کن

اگر نتونستی حلش کنی کدها رو کامل بذار که بتونیم مشکل رو پیدا کنیم

محمد گازری ۱۰ تیر ۱۴۰۱، ۰۴:۵۴

سورس کد کامل پروژه پیوست شد.

ابتدا دستور composer install رو بزنید تا فولدر vendor ایجاد بشه

آرمین صادقیان ۱۰ تیر ۱۴۰۱، ۰۴:۵۹

با توجه به اینکه بررسی پروژه‌ها میتونه نسبت به سایر تاپیک‌ها زمان بر باشه

در اولین فرصت بررسی میشه و نتیجه در همین تاپیک خدمتتون اعلام خواهد شد


محمد گازری ۱۰ تیر ۱۴۰۱، ۰۹:۴۳

من پس از آزمون و خطاهای فراوان متوجه یک اشتباه کوچیک توی متد add داخل کلاس Route شدم

جلوی self::$routes علامت [] رو نذاشته بودم و برای همین ارور میداد:

public static function add($methods, string $uri, $action = null): void
{
    $methods = is_array($methods) ? $methods : [$methods];
    self::$routes = [
        'methods' => $methods,
        'uri' => $uri,
        'action' => $action
    ];
}

ولی وقتی علامت [] رو گذاشتم مشکل حل شد:

public static function add($methods, string $uri, $action = null): void
{
    $methods = is_array($methods) ? $methods : [$methods];
    self::$routes[] = [
        'methods' => $methods,
        'uri' => $uri,
        'action' => $action
    ];
}

این نوع سینتکس اسم خاصی داره و یا از ورژن خاصی به PHP اضافه شده؟؟؟؟

آرمین صادقیان ۱۰ تیر ۱۴۰۱، ۱۲:۵۲

دوست عزیز این قسمت مربوط به آرایه هاست

با ای سینتکس شما عضو جدید به اون آرایه اضافه می‌کنید به جای انکیه مقدارش بازنویسی بشه

محمد گازری ۱۰ تیر ۱۴۰۱، ۱۳:۰۹

داکیومنت خاصی سراغ ندارید برای مطالعه بیشتر؟

آرمین صادقیان ۱۰ تیر ۱۴۰۱، ۱۳:۱۳

توی همین لینک توضیح داده

https://www.php.net/manual/en/function.array-push.php

موفق باشید ?

بهترین پاسخ
محمد گازری ۱۰ تیر ۱۴۰۱، ۱۳:۳۶