PHP url的pathinfo模式加载不同控制器的简单实现
来源: 阅读:1335 次 日期:2016-08-29 14:55:19
温馨提示: 小编为您整理了“PHP url的pathinfo模式加载不同控制器的简单实现”,方便广大网友查阅!

使用自动加载和解析url的参数,实现调用到不同的控制器,实现了pathinfo模式和普通的url模式

文件结构:

|--Controller

  |--Index

    |--Index.php

|--Application.php

Application.php:

class Application{

public static function main(){

header("content-type:text/html;charset=utf-8");

self::register();

self::router();

}

public static function register(){

spl_autoload_register("self::loadClass");

}

public static function loadClass($class){

$class=str_replace('\\', '/', $class);

$class="./".$class.".php";

require_once $class;

}

public static function router(){

if(isset($_SERVER['PATH_INFO'])){

$pathinfo=array_filter(explode("/", $_SERVER['PATH_INFO']));

for($i=1;$i<=count($pathinfo);$i++){

$key=isset($pathinfo[$i]) ? $pathinfo[$i] : '';

$value=isset($pathinfo[$i+1]) ? $pathinfo[$i+1] :"";

switch ($i) {

case 1:

$_GET['m']=ucfirst($key);

break;

case 2:

$_GET['c']=ucfirst($key);

break;

case 3:

$_GET['a']=$key;

break;

default:

if($i>3){

if($i%2==0){

$_GET[$key]=$value;

}

}

break;

}

}

}

$_GET['m']=!empty($_GET['m']) ? ucfirst($_GET['m']) : 'Index';

$_GET['c']=!empty($_GET['c']) ? ucfirst($_GET['c']) : 'Index';

$_GET['a']=!empty($_GET['a']) ? $_GET['a'] : 'index';

$class="\\Controller\\{$_GET['m']}\\{$_GET['c']}";

$controller=new $class;

$controller->$_GET['a']();

}

}

Application::main();

\Controller\Index\Index.php

namespace Controller\Index;

use Service\User;

class Index{

public function __construct(){

echo "构造方法
";

}

public function index(){

new User();

print_r($_GET);

}

public function login(){

echo "login()";

}

}

以上这篇PHP url的pathinfo模式加载不同控制器的简单实现就是小编分享给大家的全部内容了,希望能给大家一个参考

更多信息请查看 网络编程
由于各方面情况的不断调整与变化, 提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!

2026上岸·考公考编培训报班

  • 报班类型
  • 姓名
  • 手机号
  • 验证码
关于我们| 联系我们| 人才招聘| 网站声明| 网站帮助| 非正式的简要咨询| 简要咨询须知| 新媒体/短视频平台| 手机站点| 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 云南省教育厅备案号:云教ICP备0901021 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65099533/13759567129 获取招聘考试信息及咨询关注公众号:
咨询QQ:1093837350(9:00—18:00) 版权所有:
云南网警报警专用图标
Baidu
map