php编写一个简单的路由类
<?php
class Router
{
public function getRouter($types = 1)
{
if ( isset($_SERVER['PATH_INFO']) )
{
$query_string = substr(str_replace(array('.html','.htm', '.asp', '//'), '',$_SERVER['PATH_INFO']),1);
}
else
{
$query_string = str_replace($_SERVER['SCRIPT_NAME'], '',$_SERVER['PHP_SELF']);
}
if ( $types == 1 )
{
// 第一种类型以/分隔
$temp = explode('/', $query_string);
}
elseif ($types == 2)
{
$temp = explode('-', $query_string);
}
elseif ($types == 3)
{
return array('Controller'=>$_GET['controller']);
}
if ( empty($temp[0]) )
{
return array('Controller' => 'index','Operate' => 'index');
}
if ( empty($temp[1]) )
{
$temp[] = 'index';
}
// 去除空项
foreach ($temp as $val)
{
if ($val)
{
$url[] = $val;
}
}
list($controller, $operate) = $url;
//有参数的情况
$params = array();
if ( count($url)>2 )
{
array_shift($url);
array_shift($url);
$params = $url;
}
return
array(
"Controller" => $controller,
"Operate" => $operate,
"params" => $params,
);
}
}
?>
<?php
$url = new Router();
$url->getRouter(1);
print_r($url); //在这里可以看到各元素
?>
相关推荐
-
php url路由入门实例
一.什么是php的路由机制 1.路由机制就是把某一个特定形式的URL结构中提炼出来系统对应的参数.举个例子,如:http://main.test.com/article/1 其中:/article/1 -> ?_m=article&id=1. 2.然后将拥有对应参数的URL转换成特定形式的URL结构,是上面的过程的逆向过程. 二.PHP的URL路由方式 总体来说就是:获取路径信息->处理路径信息 URL路由方式: 第一种是通过url参数进行映射的方式,一般是两个参数,分别代表控制器
-
PHP URL路由类实例
前段时间写了个关于手机应用的api,一直是用的query_string这种地址,而且还是根据一个act参数来区分所有的动作,这种让开发人员看起来比较费眼.本来想改写为"?c=controller&m=method&type=3&id=1" 这种形式,利用m参数来载入文件并进行实例化,后来看了sina weibo api 是对地址进行了路由.也决定跟风对地址路由.本来CI框架自己自带路由效果,但是因为考虑是写api,想写的比较纯粹一点.支持默认控制器(index)
-
一个简单的php路由类
本文实例为大家分享了php编写一个简单的路由类,供大家参考,具体内容如下 <?php namespace cmhc\Hcrail; class Hcrail { /** * callback function * @var callable */ protected static $callback; /** * match string or match regexp * @var string */ protected static $match; protected static $rou
-
thinkphp的URL路由规则与配置实例
本文实例讲述了thinkphp的URL路由规则与配置方法.分享给大家供大家参考.具体分析如下: 一.URL规则 1.默认是区分大小写的 2.如果我们不想区分大小写可以改配置文件 复制代码 代码如下: 'URL_CASE_INSENSITIVE'=>true,//url不区分大小写 3.如果模块名为 UserGroupAction,那么url找模块就必要要写成 复制代码 代码如下: http://localhost/thinkphp4/index.php/user_group/index 4.如果
-
Phpbean路由转发的php代码
第一步:入门 如何使用phpbean进行路由转发呢?下面是一个简单的使用例子. 首先,index.php是程序的单一入门,主要进行路由转发的工作.Index.php的程序代码如下: <? include('startup.php');//载入启动文件 try{ $router=new Phpbean_Router();//初始化路由器 $router->set_path(SITE_PATH.'/app/actions');//设置控制器的目录 $router-
-
ThinkPHP、ZF2、Yaf、Laravel框架路由大比拼
前言 读过一篇关于Zend Framework2的技术文章<ZF2多级树形路由Route配置实例>,是介绍路由配置的.我觉得很有意思,这是的需求: /user对应用户列表页面 /user/:user_id对应用户的个人主页,比如 /user/AlloVince 就对应AlloVince用户的个人主页 /user/:user_id/blog/对应用户的博客列表页面,比如 /user/AlloVince/blog 就会列出AlloVince写过的Blog /user/:user_id/blog/:
-
thinkphp路由规则使用示例详解和伪静态功能实现(apache重写)
复制代码 代码如下: <?php //thinkphp 路由定义规则 $route = array( 'news/:action/:year\d/:month/:day'=>'news/read?year=:2&month=:3&day=:4', 'news/:action^delete|update|insert/:year\d/:month/:day'=>array( 'news/read?extra=:2&status
-
asp.net不用设置iis实现url重写 类似伪静态路由
程序要调整的部分只有两块.一是web.config文件.二是链接地址.所需urlrewrite.dll 首先下载URLRewriter:http://download.microsoft.com/download/0/4/6/0463611e-a3f9-490d-a08c-877a83b797cf/MSDNURLRewriting.msi 下载安装后再bin目录下找到URLRewriter.dll文件 好了开始实施.第一步:将urlrewrite.dll下载到你的web程序目录里去.哪都行.我是
-
php处理restful请求的路由类分享
复制代码 代码如下: <?php class Router { // 路由表 private $routers = array( array("name"=>"userlist", "pattern"=>"get /user", "action"=>"User#get"), array(
-
php编写一个简单的路由类
类代码: 复制代码 代码如下: <?php class Router { public function getRouter($types = 1) { if ( isset($_SERVER['PATH_INFO']) ) { $query_string = substr(str_replace(array('.html','.htm', '.asp', '//'), '',$_SERVER['PATH_INFO']),1); } else { $query_string = str_repl
-
Lua教程(六):绑定一个简单的C++类
本文是最后一篇C/C++与Lua交互的教程,在此之后,我们会结合Cocos2D-X来介绍Lua绑定.本文主要介绍如何绑定一个简单的C++类到Lua里面,并且提供Lua的面向对象访问方式. 绑定C++类 定义C++类 首先,我们定义一个Student类,它拥有名字(字符串类型)和年龄(整型),并且提供一些getter和setter,最后还提供了一个print方法.这里有Student类的定义和实现:Student.h和Student.cpp 编写绑定代码 首先,让我们编写在Lua里面创建Stude
-
使用C++ MFC编写一个简单的五子棋游戏程序
MFC简介: MFC(MicrosoftFoundationClasses)是微软基础类库的简称,是微软公司实现的一个c++类库,主要封装了大部分的windows API函数. MFC除了是一个类库以外,还是一个框架,在vc++里新建一个MFC的工程,开发环境会自动帮你产生许多文件,同时它使用了mfcxx.dll.xx是版本,它封装了mfc内核,所以你在你的代码看不到原本的SDK编程中的消息循环等等东西,因为MFC框架帮你封装好了,这样你就可以专心的考虑你程序的逻辑,而不是这些每次编程都要重复的
-
Java Swing编写一个简单的计算器软件
目录 实现要求 实现代码: 实现要求 1.使用Java图形界面组件设计软件,界面如图所示. 2.软件能够满足基本的"加.减.乘.除"等运算要求. 3.程序代码清晰,语法规范,结构合理,逻辑正确. 4.编辑菜单中包括"复制和粘贴"两个菜单项,为菜单项编写事件代码. 实现代码: import java.awt.BorderLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; impo
-
基于Java编写一个简单的风控组件
目录 一.背景 1.为什么要做风控 2.为什么要自己写风控 3.其它要求 二.思路 1.风控规则的实现 2.调用方式的实现 三.具体实现 1.风控计数规则实现 2.注解的实现 四.测试一下 1.写法 2.Debug看看 一.背景 1.为什么要做风控 这不得拜产品大佬所赐 目前我们业务有使用到非常多的AI能力,如ocr识别.语音测评等,这些能力往往都比较费钱或者费资源,所以在产品层面也希望我们对用户的能力使用次数做一定的限制,因此风控是必须的! 2.为什么要自己写风控 那么多开源的风控组件,为什么
-
Python实现一个简单的MySQL类
本文实例讲述了Python实现一个简单的MySQL类.分享给大家供大家参考. 具体实现方法如下: 复制代码 代码如下: #!/usr/bin/env python # -*- coding:utf-8 -*- # Created on 2011-2-19 # @author: xiaoxiao import MySQLdb import sys __all__ = ['MySQL'] class MySQL(object): ''' MySQL ''' conn
-
利用 Go 语言编写一个简单的 WebSocket 推送服务
本文中代码可以在 github.com/alfred-zhong/wserver获取. 背景 最近拿到需求要在网页上展示报警信息.以往报警信息都是通过短信,微信和 App 推送给用户的,现在要让登录用户在网页端也能实时接收到报警推送. 依稀记得以前工作的时候遇到过类似的需求.因为以前的浏览器标准比较陈旧,并且那时用 Java 较多,所以那时候解决这个问题就用了 Comet4J.具体的原理就是长轮询,长链接.但现在毕竟 html5 流行开来了,IE 都被 Edge 接替了,再用以前这种技术就显得过
-
使用原生js编写一个简单的框选功能方法
今天我们来聊一下怎么使用原生javascript编写一个简单的框选功能. 需求描述 鼠标左键按下不放,移动鼠标出现矩形选框: 鼠标左键松开,根据上边出现的矩形选框统计选框范围内的DOM元素: 嗯...上边的功能描述看着是挺简单的,但实现起来也还是会有些地方需要斟酌思考的.比如,如果我们的框选范围不是document.body,而是某一个div里边进行框选呢?而现实开发过程中,我们会遇上的应该就是第二种情况. 点击查看完整的源码 怎么实现 二话不说,咱们动手写代码吧!因为更好的兼容性,这里就避免了
-
python+flask编写一个简单的登录接口
在学习接口测试的时候往往会因为没有实际操作的接口进行测试而烦恼,这里教大家自己编写两个接口用于学习接口测试 1.编写一个登录的接口 2.在pycharm运行 3.使用apipost进行登录接口测试 输入url和参数值进行访问,访问成功. 4.在pycharm查看是否正常进行访问 5.在编写一个需要登录返回的token直接访问的查询接口 6.运行登录和查询两个接口 7.使用apipost进行登录和查询的接口测试 首先进行登录的接口测试获取返回的token 使用登录返回的token值进行查询的接口测
-
C# 利用VS编写一个简单的网游客户端
目录 一.测试连接服务器 二.设计客户端 三.运行效果 四.总结 一.测试连接服务器 1.打开cmd,输入ping 10.1.230.74 2.输入telnet,进入telnet界面 3.输入set localecho,打开本地回显: 4.连接服务器,输入命令open 10.1.230.74 3900 二.设计客户端 1.新建项目 打开VS2022选择新建Windows窗体应用 如果没找到,说明没有安装相应的配置,可以添加工具 选择 安装成功就能找到了. 2.设计界面 新建完成后,会直接来到Fo
随机推荐
- DOS批处理中%~dp0等扩充变量语法详解
- Javascript实现从小到大的数组转换成二叉搜索树
- ajax 乱码的一种解决方法
- 邪恶的eval和new Function使用介绍
- FLEX TitleWindow之间数据传输的示例
- 在IIS中改变ASP.NET程序版本的实现方法附批处理代码
- JQuery为textarea添加maxlength属性并且兼容IE
- 原生JS实现旋转木马式图片轮播插件
- 根据输入邮箱号跳转到相应登录地址的解决方法
- 浅谈php处理后端&接口访问超时的解决方法
- JS自定义功能函数实现动态添加网址参数修改网址参数值
- CSS图文混排的几种方案
- 详解C语言中结构体的自引用和相互引用
- 解决遍历时Array.indexOf产生的性能问题
- Android开发之禁止下拉通知栏的方法
- JavaScript将Table导出到Excel实现思路及代码
- Android 自定义View实现芝麻分曲线图效果
- 电脑工作者防辐射食谱
- 基于php中echo用逗号和用点号的区别详解
- 使用IntelliJ IDEA配置Tomcat入门教程