<?php
namespace mvc;
class UserController
{
public function show($id,$name)
{
return 'Hello '.$name.' id = ' .$id;
}
}
//$pathinfo = explode('/',$_SERVER['PATH_INFO']);
//array_filter():过滤掉空元素
//array_values():将数组键名重置,从0开始
$pathinfo = array_values(array_filter(explode('/',$_SERVER['PATH_INFO'])));
//生成控制器名称
//array_shift() 函数删除数组中第一个元素,并返回被删除元素的值
//$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() 函数删除数组中的最后一个元素,并返回其值
$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)关系的工具。你可以在自己的项目中声明所依赖的外部工具库(libraries),Composer 会帮你安装这些依赖的库文件。
主要是理解路由的原理,通过$_SERVER[‘PATH_INFO’]全局变量获取控制器名,方法名和参数,然后再调用类中的方法,url地址会把值传给$_SERVER[‘PATH_INFO’],从而间接调用类方法
array_filter():过滤掉空元素
array_values():将数组键名重置,从0开始
array_shift() 函数删除数组中第一个元素,并返回被删除元素的值
array_pop() 函数删除数组中的最后一个元素,并返回其值
composer 是管理php依赖关系的工具