Yaf框架自动添加URL后缀名例子

同Codeigniter一样,Yaf也设置了几个钩子函数,在适当情况下可以接管或改变程序走向。

1 routerStartup 在路由之前触发 这个是7个事件中, 最早的一个. 但是一些全局自定的工作, 还是应该放在Bootstrap中去完成
2 routerShutdown 路由结束之后触发 此时路由一定正确完成, 否则这个事件不会触发
3 dispatchLoopStartup 分发循环开始之前被触发
4 preDispatch 分发之前触发 如果在一个请求处理过程中, 发生了forward, 则这个事件会被触发多次
5 postDispatch 分发结束之后触发 此时动作已经执行结束, 视图也已经渲染完成. 和preDispatch类似, 此事件也可能触发多次
6 dispatchLoopShutdown 分发循环结束之后触发 此时表示所有的业务逻辑都已经运行完成, 但是响应还没有发送

通过钩子的定义可以看到,routerStartup是在路由初始化之前的钩子,所以可以在routerStartup中对REQUEST_URI后缀进行控制,有特定后缀时截取掉即可。
示例如下:

# application\plugins\System.php

# Yaf_Registry::get('config')->application->url_suffix为配置文件定义的后缀,如:.html

 

class SystemPlugin extends Yaf_Plugin_Abstract

{

    public function routerStartup(Yaf_Request_Abstract $request, Yaf_Response_Abstract $response)

    {

        if(Yaf_Registry::get('config')->application->url_suffix) {

            if(strtolower(substr($_SERVER['REQUEST_URI'], - strlen(Yaf_Registry::get('config')->application->url_suffix))) == strtolower(Yaf_Registry::get('config')->application->url_suffix)) {

                $request->setRequestUri(substr($_SERVER['REQUEST_URI'], 0 , - strlen(Yaf_Registry::get('config')->application->url_suffix)));

            }

        }

    }

}

此处URL通过REQUEST_URI获取,其他方式同理。然后使用页面统一创建URL的方法,生成URL的时候加上后缀即可。

URL Rewrite的实现 .htaccess

<IfModule mod_rewrite.c>

RewriteEngine on

 

# if a directory or a file exists, use it directly

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

 

# otherwise forward it to index.php

RewriteRule . index.php

</IfModule>

SAE

- rewrite: if (!is_file() && !is_dir() && path ~ "^/(.*)") goto "index.php/$1"

 

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索url
, 路由
事件
yaf 框架、php yaf框架、yaf框架下载、yaf框架教程、yaf框架能使用php7吗,以便于您获取更多的相关知识。

时间: 2024-12-30 11:22:18

Yaf框架自动添加URL后缀名例子的相关文章

乱码-部分文件被自动添加udef 后缀

问题描述 部分文件被自动添加udef 后缀 移动硬盘上的部分文件(包括exe,chm,txt,...格式文件)被自动添加udef 后缀,且txt文件打开是乱码,其他格式文件无法打开. txt文件复制出来,并去掉后缀,打开之后仍然乱码 其他格式文件,复制出来,并去掉后缀,仍然无法打开 解决方案 文件复制出来,并去掉后缀,打开之后仍然乱码 解决方案二: 你最好是能说明一下你在什么环境下.使用什么软件产生的这个现象 解决方案三: 文件bi编码格式乱了?

自动添加udef 后缀,且乱码。

问题描述 自动添加udef 后缀,且乱码. 移动硬盘上的部分文件(包括exechmtxt...格式文件)被自动添加udef 后缀且txt文件打开是乱码其他格式文件无法打开.txt文件复制出来并去掉后缀打开之后仍然乱码其他格式文件复制出来并去掉后缀仍然无法打开目前估计应该是之前我用文件夹加密软件加密过之后直接删除该软件但忘记使用的哪个文件夹加密软件了请问可有解决方案. 解决方案 被加密了,只能通过软件解密,是不是用的winrar加密的

部分文件被自动添加udef 后缀

问题描述 移动硬盘上的部分文件(包括exe,chm,txt,...格式文件)被自动添加udef后缀,且txt文件打开是乱码,其他格式文件无法打开.txt文件复制出来,并去掉后缀,打开之后仍然乱码其他格式文件,复制出来,并去掉后缀,仍然无法打开 解决方案 解决方案二:目测你的办公网络里使用了加密软件了你离开网络环境就无法再打开如果不是,那么就是中病毒了解决方案三:100%是中毒了.解决方案四:若是中毒,如何解决?解决方案五:我已经扫描移动硬盘,除去病毒了,还是打开乱码解决方案六:引用4楼O1565

Yaf框架自动加载和路由分发的使用方法

一.自动加载(YafLoader) 1.YafLoader相关的几个配置 PHP运行时配置 yaf.use_namespace 开启命名空间 yaf.use_spl_autoload 开启之后,可由PHP的自动加载函数加载,关闭是为了高效,Yaf只加载一次. yaf.library 全局类库目录路径 Yaf应用配置 application.library 本地类库目录路径 application.library.directory 本地类库目录路径 application.library.nam

php获取文件后缀名的几种方法

获取文件后缀的方法有很多种,差不多能总结出7,8种,原理基本上都分成两种.第一种:得到文件名中最后一个"."的位置,然后再进行截取:第二种:用explode将文件名以"."进行分割成数组,再取数组中最后一个值. 具体实现源码参考: $file1 = 'e:/ddd/ww/file.doc.zip'; $file2 = 'e:/ddd/ww/file.jpg.png'; $suffix1 = end( explode('.', $file1) ); //先把文件名以&

js获取判断上传文件input=file后缀名的例子

例子  代码如下 复制代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv=

js URL地址自动添加的实现正则

js url地址自动添加的实现正则 url地址自动添加的实现其实就是那么点内容:检测与替换. 检测 "检测"就是检测文字(字符串)内部是否有符合http地址的内容,显然,这需要用到正则表达式进行验证,这个工作前端和后台都可以做,这里,只讲前端的方法,使用网页特效实现. 验证http地址的正则表达式如下(可能有疏漏或是不准确之处,欢迎指正): var reg = /(http://|https教程://)((w|=|?|.|/|&|-)+)/g; 前一部分匹配http或是http

JavaScript实现url地址自动检测并添加URL链接示例代码_javascript技巧

背景:写一个简单的聊天系统,发出Htpp的Url实现跳转加上a标签. 实现代码: 复制代码 代码如下: String.prototype.httpHtml = function(){ var reg = /(http:\/\/|https:\/\/)((\w|=|\?|\.|\/|&|-)+)/g; return this.replace(reg, '<a target=_blank href="$1$2">$1$2</a>'); }; 摘录: URL地

asp.net通过HttpModule自动在Url地址上添加参数_实用技巧

然而手机客户端又不支持Session和Cookie传值,其他方法给页面赋值再传值显得太麻烦了,而且还不易维护,容易弄丢出错,于是想到了用HttpModule来把cid参数赋在Url地址上,让url把cid参数每页自动传递下去,需要用cid时只要通过Requet["cid"]获取,这样就不用为传值而烦恼了. 以下是配置方法和源码. 1)在web.config配置文件中添加以下节点 复制代码 代码如下: <httpModules> <add name="Http