نوشتن یک Router

خرید بک لینک
سلام خدمت دوستان و اساتید محترم .

من یه Router نوشتم ... وسط کار که بودم گفتم بگذارم تو سایت شما هم یه نظر بدین که کارم دزست هست یا نه ...

این فایل Router من هستش :

کد PHP:

<?phpclass Router
{
/*
All Properties
*/
private static $_RouteName=array();
private static
$_Params=array();
/*
All Methods of Router
*/

//Register Manual Router

public static function register($router,$action)
{
if(
$router !== '' || $action !== '')
{
$routerParamsFinder = strpos($router,'#');
$ClassandActionName = explode('.', $action);
$ClassName = ucfirst(str_replace('Controller','',$ClassandActionName[0]));
$ActionName = $ClassandActionName[1].'Action';
if(
$routerParamsFinder === false)
{
self::$_RouteName[$router] = array(
'class' => $ClassName,
'actionName' => $ActionName,
//'params' => false
);
}
else
{
$rName = substr($router,0,strpos($router,'/'));
$Params = explode('#',$router);
for(
$i=1;$i < count($Params);$i++)
{
self::$_Params[$i] = $Params[$i];
}
self::$_RouteName[$rName] = array(
'class' => $ClassName,
'actionName' => $ActionName,
'params' => self::$_Params
);
}
}
else
{
self::$_RouteName[$rName] = array(
'class' => '',
'actionName' => '',
'params' => ''
);
}

}

//Check That Router is Manual or Coming From usersprivate static function checkRouter($url)
{
if(isset(
self::$_RouteName[$url]))
{
if(isset(
self::$_RouteName[$url]['params']))
{
retu
'Params';
}
else
{
retu
'NoParams';
}
}
else
{
retu
'DefualtFunction';
}

}

//Catch Route And pass to the CheckRouter() After That show Result to the Userspublic static function routerURL($url)
{
$BreakUrl = explode('/', $url);
$bURL=$BreakUrl[0];
$conditions = self::checkRouter($BreakUrl[0]);
switch (
$conditions) {
case
'Params':
$ClassName = 'App\Controllers\'.self::$_RouteName[$bURL]['class'];
$object2 = ucfirst(self::$_RouteName[$bURL]['actionName']);
if(
autoload($ClassName) != "No")
{
if(
method_exists($ClassName,$object2))
{
$i=0;
$b=1;
$sParams=array();
foreach (
self::$_RouteName[$bURL]['params'] as $key )
{
$sParams[$i] = !empty($BreakUrl[$b]) ? $BreakUrl[$b] : false;
$i++;
$b++;
}
call_user_func_array(array($ClassName,$object2),$sParams);
}
else
{
echo
"Method is not Exist";
}
}
else
{
echo
"File is Not Exist";
}
break;
case
'NoParams':
$ClassName = 'App\Controllers\'.self::$_RouteName[$bURL]['class'];
$object2 = ucfirst(self::$_RouteName[$bURL]['actionName']);
if(
autoload($ClassName) != "No")
{
if(
method_exists($ClassName,$object2))
{
$object=new $ClassName;
$object->$object2();
}
else
{
echo
"Method is not Exist";
}
}
else
{
echo
"File is Not Exist";
}
break;
case
'DefualtFunction':
echo
"User Function bayad beravad";
//Inja Bayad be ye Tabe bere ke Bebine URL esh Sahih hast ya Na(Ke Hosele nadashtam naneveshtam)
break;

default:
echo
"Nothing";
break;
}
}
}
?>

البته هنوز خیلی کار داره ولی وفعلا جوریه که میره Route های دستی که به پروژه دادم اگه چیزی پیدا کرد 2 قسمتش میکنه یا پارامتری با خودشون دارن یا ندارن که هر کدوم رو به قسمت خودش میفرسته و همینطور وجود فایل و متد و اینا رو هم چک میکنه در ضمن من از namespace هم استفاده کردم.

فقط میخواستم بدونم چیزی که نوشتم اصولی هست یا نه چون چیزی بوده که خودم نوشتم برای همین اصولی بودنش برام مهم هست و اگه اشکالی توش هست لطفا تذکر بدین تا مرتفع بشه تو برنامم ممنونم

HeartHeart

php مرکز کد های سایت...

ما را در سایت php مرکز کد های سایت دنبال می‌کنید

برچسب: نویسنده: استخدام کار بازدید: 141 تاريخ: جمعه 4 تير 1395 ساعت: 21:09

صفحه بندی