سلام استاد
در جلسه 46 ، این کد ها را نوشتین
define("BASE_URL", "http://localhost:8000");
$temporary = str_replace(BASE_URL, "", explode("?", $_SERVER["REQUEST_URI"])[0]);
$temporary === "/" ? $temporary = "" : $temporary = substr($temporary, 1);
همان طور که گفته بودین SERVER["REQUEST_URI"] ، بعد لوکال هاست یا دامین بر می گردونه خوب پس چه نیازی هست که بیایم base_url از توش حذف کنیم که اصلا توش نیست ؟
سوال دومم اینه که تو جلسه 55 وقتی داشتین کلاس Routing می نوشتین به صورت زیر عمل کردین
class Routing
{
private $current_route;
private $method_field; // post or get or put or delete
private $routes;
private $values = [];
public function __construct()
{
$this->current_route = explode("/", CURRENT_ROUTE);
$this->method_field = $this->methodField();
global $routes;
$this->routes = $routes;
}
public function run()
{
}
public function match()
{
}
private function compare($reservedRouteUrl){
//part1
if(trim($reservedRouteUrl, '/') === ''){
return trim($this->current_route[0], '/') === '' ? true : false;
}
//part2
$reservedRouteUrlArray = explode('/', $reservedRouteUrl);
if(sizeof($this->current_route) != sizeof($reservedRouteUrlArray)){
return false;
}
//part3
foreach ($this->current_route as $key => $currentRouteElement) {
$reservedRouteUrlElement = $reservedRouteUrlArray[$key];
if(substr($reservedRouteUrlElement, 0, 1) == "{" && substr($reservedRouteUrlElement, -1) == "}"){
array_push($this->values, $currentRouteElement);
}
elseif($reservedRouteUrlElement != $currentRouteElement){
return false;
}
}
return true;
}
}
تو اوایلش یک متد construct هست که توش explode کردین currentRoute بر اساس اسلش . و تبدیل به آرایه شد
اما تو فانکشن compare تو قسمت پارت یک اومدین کد زیر نوشتین
return trim($this->current_route[0], '/') === '' ? true : false;
که با trim می خواین اسلش حذف کنید ولی اسلشی وجود نداره ، چون اون بالا اسلشا با explode حدف شدن ؟
ممنون میشم یه بررسی کنید
دوست عزیز جواب سوال اولتون اینکه REQUEST_URI کل ادرس رو برمیگردونه
BASE_URL دامین سایت رو برمیگردونه مثلا : https://toplearn.com
سلام مرسی از پاسخ
ولی منظور من این بود که بعد http://localhost بر می گردونه الان مثلا این دستور زیر تست کنیم
var_dump($_SERVER["REQUEST_URI"]);
نتیجه میشه این
تو اون خط بالا گفته شده که به جای localhaost ، جالی بزار . ولی نکته اینجاست که localhost توش نیست
با سلام خدمت شما همراه عزیز
هر دو بخش رو برای محکم کاری نوشتیم چون همیشه ادرس current به این صورت نخواهد بود
ممنون از لطفتون
سلامت باشید