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 操作文件的一些FAQ总结
Feb 12 PHP
常见的PHP五种设计模式小结
Mar 23 PHP
一个简单的网页密码登陆php代码
Jul 17 PHP
浅析php中常量,变量的作用域和生存周期
Aug 10 PHP
Linux下安装oracle客户端并配置php5.3
Oct 12 PHP
PHP中使用imagick生成PSD文件缩略图教程
Jan 26 PHP
php中stdClass的用法分析
Feb 27 PHP
浅谈PHP中的
Apr 23 PHP
mysql alter table命令修改表结构实例详解
Sep 24 PHP
php使用Jpgraph创建柱状图展示年度收支表效果示例
Feb 15 PHP
PHP-CGI远程代码执行漏洞分析与防范
May 07 PHP
php中get_object_vars()在数组的实例用法
Feb 22 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
关于我转生变成史莱姆这档事:第二季PV上线,萌王2021年回归
2020/05/06 日漫
PHP缓存技术的使用说明
2011/08/06 PHP
PHP执行Curl时报错提示CURL ERROR: Recv failure: Connection reset by peer的解决方法
2014/06/26 PHP
PHP curl使用实例
2015/07/02 PHP
带你了解PHP7 性能翻倍的关键
2015/11/19 PHP
nginx下安装php7+php5
2016/07/31 PHP
PHP生成推广海报的方法分享
2018/04/22 PHP
Ajax+PHP实现的分类列表框功能示例
2019/02/11 PHP
PHP常量define和const的区别详解
2019/05/18 PHP
JS 自动安装exe程序
2008/11/30 Javascript
IE和Firefox下event事件杂谈
2009/12/18 Javascript
网页前台通过js非法字符过滤代码(骂人的话等等)
2010/05/26 Javascript
js 第二代身份证号码的验证机制代码
2011/05/12 Javascript
jQuery代码优化 事件委托篇
2011/11/01 Javascript
禁止iframe脚本弹出的窗口覆盖了父窗口的方法
2014/09/06 Javascript
JS DOM实现鼠标滑动图片效果
2020/09/17 Javascript
如何理解Vue的作用域插槽的实现原理
2017/08/19 Javascript
Three.js基础学习之场景对象
2017/09/27 Javascript
jquery鼠标悬停导航下划线滑出效果
2017/09/29 jQuery
jQuery+datatables插件实现ajax加载数据与增删改查功能示例
2018/04/17 jQuery
详解.vue文件解析的实现
2018/06/11 Javascript
JavaScript制作3D旋转相册
2020/08/02 Javascript
[01:20:38]完美世界DOTA2联赛 GXR vs IO 第一场 11.07
2020/11/09 DOTA
Python标准库之sqlite3使用实例
2014/11/25 Python
python 函数传参之传值还是传引用的分析
2017/09/07 Python
Python获取航线信息并且制作成图的讲解
2019/01/03 Python
python基于Selenium的web自动化框架
2019/07/14 Python
python网络编程 使用UDP、TCP协议收发信息详解
2019/08/29 Python
Flask处理Web表单的实现方法
2021/01/31 Python
利用CSS3实现动态的二级三级菜单效果实例源码
2017/01/04 HTML / CSS
英国PC组件和在线电脑商店:SCAN
2019/04/18 全球购物
皇家阿尔伯特瓷器美国官网:Royal Albert美国
2020/02/16 全球购物
网络管理员岗位职责
2014/03/17 职场文书
夫妻分居协议书范本
2014/11/28 职场文书
2014年公路养护工作总结
2014/12/04 职场文书
借款民事起诉状范文
2015/05/19 职场文书