
批改狀態(tài):合格
老師批語:路由實現(xiàn)方式有許多種的, 老師只是提供了一個思路而已
<?php
namespace mvc;
class UserController
{
public function show($id,$name)
{
return 'Hello '.$name.' id = ' .$id;
}
}
//$pathinfo = explode('/',$_SERVER['PATH_INFO']);
//array_filter():過濾掉空元素
//array_values():將數(shù)組鍵名重置,從0開始
$pathinfo = array_values(array_filter(explode('/',$_SERVER['PATH_INFO'])));
//生成控制器名稱
//array_shift() 函數(shù)刪除數(shù)組中第一個元素,并返回被刪除元素的值
//$controller =ucfirst(array_shift($pathinfo)).'Controller';
//echo $controller.'<hr>';
//完整類名
echo UserController::class;
echo '<hr>';
echo __NAMESPACE__.'<hr>';
$controller =__NAMESPACE__ . '\\' . ucfirst(array_shift($pathinfo)).'Controller';
echo $controller.'<hr>';
//解析控制器方法
//array_pop() 函數(shù)刪除數(shù)組中的最后一個元素,并返回其值
$action = array_shift($pathinfo);
/* echo $action.'<hr>';
echo (new $controller)->$action();
echo '<hr>';
echo call_user_func([(new $controller),$action]); */
print_r($pathinfo);
echo '<hr>';
$params = [];
for ($i=0;$i<count($pathinfo);$i+=2){
if(isset($pathinfo[$i+1])) $params[$pathinfo[$i]] = $pathinfo[$i+1];
}
print_r($params);
echo '<hr>'.call_user_func_array([(new $controller),$action],$params);
什么是composer?
composer是 PHP 用來管理依賴(dependency)關(guān)系的工具。你可以在自己的項目中聲明所依賴的外部工具庫(libraries),Composer 會幫你安裝這些依賴的庫文件。
主要是理解路由的原理,通過$_SERVER[‘PATH_INFO’]全局變量獲取控制器名,方法名和參數(shù),然后再調(diào)用類中的方法,url地址會把值傳給$_SERVER[‘PATH_INFO’],從而間接調(diào)用類方法
array_filter():過濾掉空元素
array_values():將數(shù)組鍵名重置,從0開始
array_shift() 函數(shù)刪除數(shù)組中第一個元素,并返回被刪除元素的值
array_pop() 函數(shù)刪除數(shù)組中的最后一個元素,并返回其值
composer 是管理php依賴關(guān)系的工具
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號