Phpbean路由转发的php代码


Posted in PHP onJanuary 10, 2008

第一步:入门
如何使用phpbean进行路由转发呢?下面是一个简单的使用例子。
首先,index.php是程序的单一入门,主要进行路由转发的工作。Index.php的程序代码如下:

<? 
include('startup.php');//载入启动文件 
try{ 
    $router=new Phpbean_Router();//初始化路由器 
    $router->set_path(SITE_PATH.'/app/actions');//设置控制器的目录 
    $router->dispatch();//路由转发处理 
}catch (Exception $e){ 
    echo $e; 

?> 

其中启动文件如下:

<? 
define('SITE_PATH',str_replace('\','/',dirname(__FILE__))); 
set_include_path(get_include_path().PATH_SEPARATOR.SITE_PATH.'/libs/'); 
function __autoload($filename){ 
    $filepath = SITE_PATH.'/libs/'.str_replace('_','/',$filename).'.php'; 
    if(is_file($filepath)){ 
        include($filepath); 
    } 
}?> 

然后,我们写一个action测试一下。(关于为什么选择action而不是使用controller做为控制,可以看我之前的文章逐步提升框架的性能)
比如app/actions/indexAction.php,在里面写一个测试
<? 
class indexAction extends Phpbean_Action { 

    function run(){ 
        echo 'phpbean_index page!'; 
    }     
}?> 
打开IE输入地址http://localhost:8080/phpbean/index.php/index看看结果。

第二步:获取url参数
比如说我要使用url传递参数,如何在PHPbean中实现呢?phpbean中的pathinfo支持两种获取数据方式,一种是按照关键字,一种是按照顺序(默认)。
以刚才的例子来说,在地址http://localhost:8080/phpbean/index.php/index后面加上参数http://localhost:8080/phpbean/index.php/index/1/2/3/4/
那么,使用关键字来获取url参数,使用$this->_getParam(‘1','key')。比如在indexAction的run方法中增加echo $this->_getParam(‘1','key')那么就对应输出2。注意,在phpbean中按关键字获取url参数不要求匹配配对。比如说$this->_getParam(‘1','key') 返回2, $this->_getParam(‘2','key')就会返回3.
按照次序来获取url参数应该更加方便。比如说$this->_getParam(1)就会返回1,$this->_getParam($n)就会返回第$n个参数。

第三步、Action多级目录
一般来说,程序的设计都是module->controller->action的,比如说blog->user->login。那么使用phpbean的action可以很方便进行映射。

首先,我们在app/actions下面增加blog文件夹,再在app/actions/blog/下面增加user文件夹。

现在我们来写blog->user->login这个action。首先在app/actions/blog/user/下面建立loginAction.php。里面写入

<? 
class blog_user_loginAction extends Phpbean_Action { 

    function run(){ 
        echo 'blog_user_login'; 
    } 


?> 

然后测试下http://localhost:8080/phpbean/index.php/blog/user/login/,是不是成功了呢?

那么,“如何增加一些action的公用操作呢?比如admin目录下面的所有action都要进行isadmin()检查,如何实现呢?”在phpbean中可以使用继承很方便的来实现。下面以blog->admin为例来实现。
首先,增加一个admin目录,在该目录下增加一个action基类admin.php(注意,如果不是action,那么文件命名就不要使用***Action.php来命名)

<? 
abstract class _blog_admin extends Phpbean_Action { 

    function __construct($params){ 
        parent::__construct($params); 
        echo 'admin check!'; 
    } 


?> 

然后,admin目录下的所有的action都继承与_blog_admin,而不是Phpbean_Action,这样就实现了公用操作的封装。比如说在admin目录下建立一个loginAction.php

<? 
class blog_admin_loginAction extends _blog_admin { 

    function run(){ 
        echo 'blog_admin_login'; 
    } 


?>

PHP 相关文章推荐
PHP 常见郁闷问题答解
Nov 25 PHP
PHP程序员面试 切忌急功近利(更需要注重以后的发展)
Sep 01 PHP
PHP中函数rand和mt_rand的区别比较
Dec 26 PHP
深入PHP操作MongoDB的技术总结
Jun 02 PHP
php读取二进制流(C语言结构体struct数据文件)的深入解析
Jun 13 PHP
yii实现图片上传及缩略图生成的方法
Dec 04 PHP
php中mysql连接方式PDO使用详解
Feb 25 PHP
php判断文件夹是否存在不存在则创建
Apr 09 PHP
php模仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(中)
Jun 11 PHP
php微信公众号开发之欢迎老朋友
Oct 20 PHP
Yii2.0 RESTful API 基础配置教程详解
Dec 26 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
Mar 26 PHP
php框架Phpbean说明
Jan 10 #PHP
深入解析php模板技术原理【一】
Jan 10 #PHP
php下MYSQL limit的优化
Jan 10 #PHP
优化使用mysql存储session的php代码
Jan 10 #PHP
Http 1.1 Etag 与 Last-Modified提高php效率
Jan 10 #PHP
PHP读取目录下所有文件的代码
Jan 07 #PHP
台湾中原大学php教程孙仲岳主讲
Jan 07 #PHP
You might like
CI框架验证码CAPTCHA辅助函数用法实例
2014/11/05 PHP
php生成随机颜色的方法
2014/11/13 PHP
ThinkPHP在Cli模式下使用模板引擎的方法
2015/09/25 PHP
Laravel框架分页实现方法分析
2018/06/12 PHP
两种简单实现菜单高亮显示的JS类代码
2010/06/27 Javascript
如何制作浮动广告 JavaScript制作浮动广告代码
2012/12/30 Javascript
jquery实现弹出窗口效果的实例代码
2013/11/28 Javascript
js实现一个链接打开两个链接地址的方法
2015/05/12 Javascript
JavaScript常用函数工具集:lao-utils
2016/03/01 Javascript
BootStrap Datepicker 插件修改为默认中文的实现方法
2017/02/10 Javascript
微信小程序 下拉菜单的实现
2017/04/06 Javascript
集合Bootstrap自定义confirm提示效果
2017/09/19 Javascript
面包屑导航详解
2017/12/07 Javascript
mac上配置Android环境变量的方法
2018/07/08 Javascript
对angular4子路由&amp;辅助路由详解
2018/10/09 Javascript
Vue的路由及路由钩子函数的实现
2019/07/02 Javascript
layui switch 开关监听 弹出确定状态转换的例子
2019/09/21 Javascript
vue+vant-UI框架实现购物车的复选框全选和反选功能
2019/11/05 Javascript
javascript实现图片轮换动作方法
2020/08/07 Javascript
python实现获取序列中最小的几个元素
2014/09/25 Python
python生成器,可迭代对象,迭代器区别和联系
2018/02/04 Python
Python 找到列表中满足某些条件的元素方法
2018/06/26 Python
python定时按日期备份MySQL数据并压缩
2019/04/19 Python
Python函数式编程指南:对生成器全面讲解
2019/11/19 Python
Python如何给你的程序做性能测试
2020/07/29 Python
马来西亚网上购物平台:ezbuy
2018/02/13 全球购物
致长跑运动员广播稿
2014/01/31 职场文书
代理协议书
2014/04/22 职场文书
工作会议方案
2014/05/21 职场文书
入党推优材料
2014/06/02 职场文书
创新社会管理心得体会
2014/09/12 职场文书
志愿者服务活动总结报告
2015/05/06 职场文书
垂直极限观后感
2015/06/08 职场文书
中秋节祝酒词
2015/08/12 职场文书
八年级地理课件资料及考点知识分享
2019/08/30 职场文书
pandas取dataframe特定行列的实现方法
2021/05/24 Python