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安全配置
Oct 09 PHP
适用于php-5.2 的 php.ini 中文版[金步国翻译]
Apr 17 PHP
php在多维数组中根据键名快速查询其父键以及父键值的代码
May 07 PHP
PHP获取windows登录用户名的方法
Jun 24 PHP
PHP轻量级数据库操作类Medoo增加、删除、修改、查询例子
Jul 04 PHP
初识php MVC
Sep 10 PHP
PHP中创建图像并绘制文字的例子
Nov 19 PHP
PHP文件缓存类实现代码
Oct 26 PHP
php+MySql实现登录系统与输出浏览者信息功能
Jul 01 PHP
Laravel5中Cookie的使用详解
May 03 PHP
PHP策略模式定义与用法示例
Jul 27 PHP
PHP写API输出的时用echo的原因详解
Apr 28 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
php递归创建和删除文件夹的代码小结
2012/04/13 PHP
PHP实现图片不变型裁剪及图片按比例裁剪的方法
2016/01/14 PHP
修改file按钮的默认样式实现代码
2013/04/23 Javascript
jquery form 隐藏的input 选择
2014/04/29 Javascript
jquery对象和javascript对象即DOM对象相互转换
2014/08/07 Javascript
js实现同一页面多个不同运动效果的方法
2015/04/10 Javascript
js实现网页抽奖实例
2015/08/05 Javascript
jquery实现可点击伸缩与展开的菜单效果代码
2015/08/31 Javascript
Bootstrap简单表单显示学习笔记
2016/11/15 Javascript
jquery做个日期选择适用于手机端示例
2017/01/10 Javascript
BootStrap 弹出层代码
2017/02/09 Javascript
js实现上下左右弹框划出效果
2017/03/08 Javascript
javascript计算对象长度的方法
2017/10/25 Javascript
layer.msg()去掉默认时间,实现手动关闭的方法
2019/09/12 Javascript
Node.js开发之套接字(socket)编程入门示例
2019/11/05 Javascript
python使用super()出现错误解决办法
2017/08/14 Python
python自动发邮件库yagmail的示例代码
2018/02/23 Python
Win10下python 2.7.13 安装配置方法图文教程
2018/09/18 Python
python八皇后问题的解决方法
2018/09/27 Python
python爬虫超时的处理的实例
2018/12/19 Python
Python函数装饰器实现方法详解
2018/12/22 Python
完美解决keras 读取多个hdf5文件进行训练的问题
2020/07/01 Python
python 如何利用argparse解析命令行参数
2020/09/11 Python
python绘图pyecharts+pandas的使用详解
2020/12/13 Python
基于CSS3实现的漂亮Menu菜单效果代码
2015/09/10 HTML / CSS
大四自我鉴定范文
2013/10/06 职场文书
团支书的期末学习总结自我评价
2013/11/01 职场文书
九年级科学教学反思
2014/01/29 职场文书
《梅兰芳学艺》教学反思
2014/02/24 职场文书
合作经营协议书
2014/04/17 职场文书
我与祖国共奋进演讲稿
2014/09/13 职场文书
525心理健康活动总结
2015/05/08 职场文书
教你如何使用Python Tkinter库制作记事本
2021/06/10 Python
Java基础之详解HashSet的使用方法
2021/06/30 Java/Android
JS的深浅复制详细
2021/10/16 Javascript
基于docker安装zabbix的详细教程
2022/06/05 Servers