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 伪造本地文件包含漏洞的代码
Nov 03 PHP
PHP面向对象概念
Nov 06 PHP
php和javascript之间变量的传递实现代码
Dec 19 PHP
解析php中用PHPMailer来发送邮件的示例(126.com的例子)
Jun 24 PHP
php过滤HTML标签、属性等正则表达式汇总
Sep 22 PHP
php中fgetcsv()函数用法实例
Nov 28 PHP
php中get_cfg_var()和ini_get()的用法及区别
Mar 04 PHP
smarty模板引擎基础知识入门
Mar 30 PHP
Linux系统中设置多版本PHP共存配合Nginx服务器使用
Dec 21 PHP
php获取目录下所有文件及目录(多种方法)(推荐)
May 14 PHP
TP5框架model常见操作示例小结【增删改查、聚合、时间戳、软删除等】
Apr 05 PHP
数据结构之利用PHP实现二分搜索树
Oct 25 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
php下一个阿拉伯数字转中文数字的函数
2007/07/16 PHP
Gregarius中文日期格式问题解决办法
2008/04/22 PHP
PHP自定义函数收代码
2010/08/01 PHP
JSON用法之将PHP数组转JS数组,JS如何接收PHP数组
2015/10/08 PHP
PHP基于简单递归函数求一个数阶乘的方法示例
2017/04/26 PHP
PHP常见过waf webshell以及最简单的检测方法
2019/05/21 PHP
(推荐一个超好的JS函数库)S.Sams Lifexperience ScriptClassLib
2007/04/29 Javascript
各浏览器中querySelector和querySelectorAll的实现差异分析
2012/05/23 Javascript
jquery实现页面常用的返回顶部效果
2016/03/04 Javascript
深入浅出ES6新特性之函数默认参数和箭头函数
2016/08/01 Javascript
js实现百度搜索提示框
2017/02/05 Javascript
关于React动态加载路由处理的相关问题
2019/01/07 Javascript
Vue使用Clipboard.JS在h5页面中复制内容实例详解
2019/09/03 Javascript
解决layer.open后laydate失效的问题
2019/09/06 Javascript
React Native 混合开发多入口加载方式详解
2019/09/23 Javascript
vue添加锚点,实现滚动页面时锚点添加相应的class操作
2020/08/10 Javascript
JS实现4位随机验证码
2020/10/19 Javascript
[06:42]DOTA2每周TOP10 精彩击杀集锦vol.1
2014/06/25 DOTA
10款最好的Web开发的 Python 框架
2015/03/18 Python
python集合类型用法分析
2015/04/08 Python
python开发之list操作实例分析
2016/02/22 Python
Python 递归函数详解及实例
2016/12/27 Python
python虚拟环境virtualenv的安装与使用
2017/09/21 Python
Python 寻找局部最高点的实现
2019/12/05 Python
Python使用socketServer包搭建简易服务器过程详解
2020/06/12 Python
python如何将图片转换素描画
2020/09/08 Python
python绘制分布折线图的示例
2020/09/24 Python
python爬虫基础之urllib的使用
2020/12/31 Python
美国综合购物商城:UnbeatableSale.com
2018/11/28 全球购物
入党积极分子思想汇报范文
2014/01/05 职场文书
广告设计应届生求职信
2014/03/01 职场文书
技术总监管理职责范本
2014/03/06 职场文书
《和田的维吾尔》教学反思
2014/04/14 职场文书
安全先进班组材料
2014/12/26 职场文书
优秀党员个人总结
2015/02/14 职场文书
分享Python获取本机IP地址的几种方法
2022/03/17 Python