PHP url的pathinfo模式加载不同控制器的简单实现


Posted in PHP onAugust 12, 2016

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

文件结构:

|--Controller

|--Index

|--Index.php

|--Application.php

Application.php

<?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

<?php
namespace Controller\Index;

use Service\User;
class Index{
  public function __construct(){
    echo "构造方法<br/>";
  }
  public function index(){
    new User();
    print_r($_GET);
  }
  public function login(){
    echo "login()";
  }
}

效果:

PHP url的pathinfo模式加载不同控制器的简单实现

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

PHP 相关文章推荐
用PHP和MySQL保存和输出图片
Oct 09 PHP
zend framework配置操作数据库实例分析
Dec 06 PHP
深入解析PHP的引用计数机制
Jun 14 PHP
深入file_get_contents函数抓取内容失败的原因分析
Jun 25 PHP
php switch语句多个值匹配同一代码块的实现
Mar 03 PHP
php输出金字塔的2种实现方法
Dec 16 PHP
Zend Framework动作助手Json用法实例分析
Mar 05 PHP
php实现微信公众平台发红包功能
Jun 14 PHP
PHP JWT初识及其简单示例
Oct 10 PHP
PHP基于cookie实现统计在线人数功能示例
Jan 16 PHP
php如何比较两个浮点数是否相等详解
Feb 12 PHP
使用composer命令加载vendor中的第三方类库 的方法
Jul 09 PHP
PHP命令行执行整合pathinfo模拟定时任务实例
Aug 12 #PHP
谈谈PHP连接Access数据库的注意事项
Aug 12 #PHP
总结PHP中DateTime的常用方法
Aug 11 #PHP
php使用curl详细解析及问题汇总
Aug 11 #PHP
PHP实现四种基础排序算法的运行时间比较(推荐)
Aug 11 #PHP
示例详解Laravel重置密码代码重构
Aug 10 #PHP
修改Laravel5.3中的路由文件与路径
Aug 10 #PHP
You might like
WordPress判断用户是否登录的代码
2011/03/17 PHP
一个PHP分页类的代码
2011/05/18 PHP
写出高质量的PHP程序
2012/02/04 PHP
js trim函数 去空格函数与正则集锦
2009/11/20 Javascript
Javascript Cookie读写删除操作的函数
2010/03/02 Javascript
js确认删除对话框效果的示例代码
2014/02/20 Javascript
基于Bootstrap+jQuery.validate实现Form表单验证
2014/12/16 Javascript
使用原生JS实现弹出层特效
2014/12/22 Javascript
javascript获取重复次数最多的字符
2015/07/08 Javascript
vue脚手架vue-cli的学习使用教程
2017/06/06 Javascript
js实现1,2,3,5数字按照概率生成
2017/09/12 Javascript
nginx+vue.js实现前后端分离的示例代码
2018/02/12 Javascript
vue2.0 根据状态值进行样式的改变展示方法
2018/03/13 Javascript
js调用设备摄像头的方法
2018/07/19 Javascript
vue2实现搜索结果中的搜索关键字高亮的代码
2018/08/29 Javascript
详解javascript设计模式三:代理模式
2019/03/25 Javascript
JS实现根据详细地址获取经纬度功能示例
2019/04/16 Javascript
nodejs对项目下所有空文件夹创建gitkeep的方法
2019/08/02 NodeJs
vue与django集成打包的实现方法
2019/11/11 Javascript
python学生信息管理系统
2018/03/13 Python
python面试题Python2.x和Python3.x的区别
2019/05/28 Python
Python中的十大图像处理工具(小结)
2019/06/10 Python
在python Numpy中求向量和矩阵的范数实例
2019/08/26 Python
解决Tensorboard可视化错误:不显示数据 No scalar data was found
2020/02/15 Python
2020新版本pycharm+anaconda+opencv+pyqt环境配置学习笔记,亲测可用
2020/03/24 Python
Django数据库操作之save与update的使用
2020/04/01 Python
用python获取txt文件中关键字的数量
2020/12/24 Python
html5 学习简单的拾色器
2010/09/03 HTML / CSS
意大利奢侈品网站:Italist
2016/08/23 全球购物
Lancome兰蔻官方旗舰店:来自法国的世界知名美妆品牌
2018/06/14 全球购物
安全的后院和健身蹦床:JumpSport
2019/07/15 全球购物
类和结构的区别
2012/08/15 面试题
测试工程师程序员求职信范文
2014/02/20 职场文书
查摆剖析材料范文
2014/09/30 职场文书
党干部专题民主生活会对照检查材料思想汇报
2014/10/06 职场文书
幼儿园中班教师个人工作总结
2015/02/06 职场文书