سلام
من از کد زیر برای routing استفاده می کنم
<?php
namespace Core;
use Core\routes;
class app {
public function dd($inp) {
echo "<pre>";
var_dump($inp);
echo "<pre>";
die;
}
public function __construct() {
$route = new routes();
$routes = $route->routes;
$routeCount = count($routes);
$requsted_url = trim($_SERVER['REQUEST_URI'],'/');
for($i=0;
$i<=$routeCount;
$i++) {
if($routes[$i]['url']==$requsted_url) {
echo 'is defined';
break;
} else {
echo '404';
break;
}
}
}
}
?>
این هم فایل کلاس routes
<?php
namespace Core;
class routes {
public $routes=[
[
'url' => 'login',
'controller' => 'userController',
'function' => 'index'
],
[
'url' => 'salam',
'controller' => 'examController',
'function' => 'index'
]
];
}
?>
ولی بجز اولین route که login هست بقیه رو 404 میده.
این URL مثلا http://localhost:8080/login رو میگه is difined ولی http://localhost:8080/salam رو میگه 404
@IrajJavidan1
سلام.
کل حلقه for با محتویاتش رو پاک کنید و به جاش کد زیر رو جایگزین کنید:
// Map all routes to get urls.
$mapper = function($value) {
return $value['url'];
};
$urls = array_map($mapper, $routes);
// Check if route exist
if (in_array($requsted_url, $urls)) {
echo 'is defined';
} else {
echo '404';
}
@IrajJavidan1
یکسری نکات هم بگم که کد بهتری داشته باشید:
خیلی ممنون بابت پاسخ
چرا باید سعی کنم همیشه متد های جادویی رو اول کلاس و بعد از پراپرتی ها تعریف کنم؟؟
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟