Phpbean路由轉(zhuǎn)發(fā)的php代碼
更新時(shí)間:2008年01月10日 20:13:20 作者:
Phpbean路由轉(zhuǎn)發(fā)的php代碼
第一步:入門(mén)
如何使用phpbean進(jìn)行路由轉(zhuǎn)發(fā)呢?下面是一個(gè)簡(jiǎn)單的使用例子。
首先,index.php是程序的單一入門(mén),主要進(jìn)行路由轉(zhuǎn)發(fā)的工作。Index.php的程序代碼如下:
<?
include('startup.php');//載入啟動(dòng)文件
try{
$router=new Phpbean_Router();//初始化路由器
$router->set_path(SITE_PATH.'/app/actions');//設(shè)置控制器的目錄
$router->dispatch();//路由轉(zhuǎn)發(fā)處理
}catch (Exception $e){
echo $e;
}
?>
其中啟動(dòng)文件如下:
<?
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);
}
}?>
然后,我們寫(xiě)一個(gè)action測(cè)試一下。(關(guān)于為什么選擇action而不是使用controller做為控制,可以看我之前的文章逐步提升框架的性能)
比如app/actions/indexAction.php,在里面寫(xiě)一個(gè)測(cè)試
<?
class indexAction extends Phpbean_Action {
function run(){
echo 'phpbean_index page!';
}
}?>
打開(kāi)IE輸入地址http://localhost:8080/phpbean/index.php/index看看結(jié)果。
第二步:獲取url參數(shù)
比如說(shuō)我要使用url傳遞參數(shù),如何在PHPbean中實(shí)現(xiàn)呢?phpbean中的pathinfo支持兩種獲取數(shù)據(jù)方式,一種是按照關(guān)鍵字,一種是按照順序(默認(rèn))。
以剛才的例子來(lái)說(shuō),在地址http://localhost:8080/phpbean/index.php/index后面加上參數(shù)http://localhost:8080/phpbean/index.php/index/1/2/3/4/
那么,使用關(guān)鍵字來(lái)獲取url參數(shù),使用$this->_getParam(‘1','key')。比如在indexAction的run方法中增加echo $this->_getParam(‘1','key')那么就對(duì)應(yīng)輸出2。注意,在phpbean中按關(guān)鍵字獲取url參數(shù)不要求匹配配對(duì)。比如說(shuō)$this->_getParam(‘1','key') 返回2, $this->_getParam(‘2','key')就會(huì)返回3.
按照次序來(lái)獲取url參數(shù)應(yīng)該更加方便。比如說(shuō)$this->_getParam(1)就會(huì)返回1,$this->_getParam($n)就會(huì)返回第$n個(gè)參數(shù)。
第三步、Action多級(jí)目錄
一般來(lái)說(shuō),程序的設(shè)計(jì)都是module->controller->action的,比如說(shuō)blog->user->login。那么使用phpbean的action可以很方便進(jìn)行映射。
首先,我們?cè)赼pp/actions下面增加blog文件夾,再在app/actions/blog/下面增加user文件夾。
現(xiàn)在我們來(lái)寫(xiě)blog->user->login這個(gè)action。首先在app/actions/blog/user/下面建立loginAction.php。里面寫(xiě)入
<?
class blog_user_loginAction extends Phpbean_Action {
function run(){
echo 'blog_user_login';
}
}
?>
然后測(cè)試下http://localhost:8080/phpbean/index.php/blog/user/login/,是不是成功了呢?
那么,“如何增加一些action的公用操作呢?比如admin目錄下面的所有action都要進(jìn)行isadmin()檢查,如何實(shí)現(xiàn)呢?”在phpbean中可以使用繼承很方便的來(lái)實(shí)現(xiàn)。下面以blog->admin為例來(lái)實(shí)現(xiàn)。
首先,增加一個(gè)admin目錄,在該目錄下增加一個(gè)action基類(lèi)admin.php(注意,如果不是action,那么文件命名就不要使用***Action.php來(lái)命名)
<?
abstract class _blog_admin extends Phpbean_Action {
function __construct($params){
parent::__construct($params);
echo 'admin check!';
}
}
?>
然后,admin目錄下的所有的action都繼承與_blog_admin,而不是Phpbean_Action,這樣就實(shí)現(xiàn)了公用操作的封裝。比如說(shuō)在admin目錄下建立一個(gè)loginAction.php
<?
class blog_admin_loginAction extends _blog_admin {
function run(){
echo 'blog_admin_login';
}
}
?>
如何使用phpbean進(jìn)行路由轉(zhuǎn)發(fā)呢?下面是一個(gè)簡(jiǎn)單的使用例子。
首先,index.php是程序的單一入門(mén),主要進(jìn)行路由轉(zhuǎn)發(fā)的工作。Index.php的程序代碼如下:
<?
include('startup.php');//載入啟動(dòng)文件
try{
$router=new Phpbean_Router();//初始化路由器
$router->set_path(SITE_PATH.'/app/actions');//設(shè)置控制器的目錄
$router->dispatch();//路由轉(zhuǎn)發(fā)處理
}catch (Exception $e){
echo $e;
}
?>
其中啟動(dòng)文件如下:
<?
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);
}
}?>
然后,我們寫(xiě)一個(gè)action測(cè)試一下。(關(guān)于為什么選擇action而不是使用controller做為控制,可以看我之前的文章逐步提升框架的性能)
比如app/actions/indexAction.php,在里面寫(xiě)一個(gè)測(cè)試
<?
class indexAction extends Phpbean_Action {
function run(){
echo 'phpbean_index page!';
}
}?>
打開(kāi)IE輸入地址http://localhost:8080/phpbean/index.php/index看看結(jié)果。
第二步:獲取url參數(shù)
比如說(shuō)我要使用url傳遞參數(shù),如何在PHPbean中實(shí)現(xiàn)呢?phpbean中的pathinfo支持兩種獲取數(shù)據(jù)方式,一種是按照關(guān)鍵字,一種是按照順序(默認(rèn))。
以剛才的例子來(lái)說(shuō),在地址http://localhost:8080/phpbean/index.php/index后面加上參數(shù)http://localhost:8080/phpbean/index.php/index/1/2/3/4/
那么,使用關(guān)鍵字來(lái)獲取url參數(shù),使用$this->_getParam(‘1','key')。比如在indexAction的run方法中增加echo $this->_getParam(‘1','key')那么就對(duì)應(yīng)輸出2。注意,在phpbean中按關(guān)鍵字獲取url參數(shù)不要求匹配配對(duì)。比如說(shuō)$this->_getParam(‘1','key') 返回2, $this->_getParam(‘2','key')就會(huì)返回3.
按照次序來(lái)獲取url參數(shù)應(yīng)該更加方便。比如說(shuō)$this->_getParam(1)就會(huì)返回1,$this->_getParam($n)就會(huì)返回第$n個(gè)參數(shù)。
第三步、Action多級(jí)目錄
一般來(lái)說(shuō),程序的設(shè)計(jì)都是module->controller->action的,比如說(shuō)blog->user->login。那么使用phpbean的action可以很方便進(jìn)行映射。
首先,我們?cè)赼pp/actions下面增加blog文件夾,再在app/actions/blog/下面增加user文件夾。
現(xiàn)在我們來(lái)寫(xiě)blog->user->login這個(gè)action。首先在app/actions/blog/user/下面建立loginAction.php。里面寫(xiě)入
<?
class blog_user_loginAction extends Phpbean_Action {
function run(){
echo 'blog_user_login';
}
}
?>
然后測(cè)試下http://localhost:8080/phpbean/index.php/blog/user/login/,是不是成功了呢?
那么,“如何增加一些action的公用操作呢?比如admin目錄下面的所有action都要進(jìn)行isadmin()檢查,如何實(shí)現(xiàn)呢?”在phpbean中可以使用繼承很方便的來(lái)實(shí)現(xiàn)。下面以blog->admin為例來(lái)實(shí)現(xiàn)。
首先,增加一個(gè)admin目錄,在該目錄下增加一個(gè)action基類(lèi)admin.php(注意,如果不是action,那么文件命名就不要使用***Action.php來(lái)命名)
<?
abstract class _blog_admin extends Phpbean_Action {
function __construct($params){
parent::__construct($params);
echo 'admin check!';
}
}
?>
然后,admin目錄下的所有的action都繼承與_blog_admin,而不是Phpbean_Action,這樣就實(shí)現(xiàn)了公用操作的封裝。比如說(shuō)在admin目錄下建立一個(gè)loginAction.php
<?
class blog_admin_loginAction extends _blog_admin {
function run(){
echo 'blog_admin_login';
}
}
?>
您可能感興趣的文章:
- php編寫(xiě)一個(gè)簡(jiǎn)單的路由類(lèi)
- PHP URL路由類(lèi)實(shí)例
- asp.net不用設(shè)置iis實(shí)現(xiàn)url重寫(xiě) 類(lèi)似偽靜態(tài)路由
- thinkphp路由規(guī)則使用示例詳解和偽靜態(tài)功能實(shí)現(xiàn)(apache重寫(xiě))
- php處理restful請(qǐng)求的路由類(lèi)分享
- php url路由入門(mén)實(shí)例
- thinkphp的URL路由規(guī)則與配置實(shí)例
- ThinkPHP、Zend?Framework2、Yaf、Laravel框架路由大比拼
- 一個(gè)簡(jiǎn)單的php路由類(lèi)
相關(guān)文章
PHP簡(jiǎn)單系統(tǒng)數(shù)據(jù)添加以及數(shù)據(jù)刪除模塊源文件下載
今天我們總結(jié)一下PHP簡(jiǎn)單信息系統(tǒng)MySQL中數(shù)據(jù)添加模塊以及刪除模塊的學(xué)習(xí)內(nèi)容。2008-06-06Php Ctemplate引擎開(kāi)發(fā)相關(guān)內(nèi)容
因?yàn)楣拘枰?,我們后面的?xiàng)目將采用Php Ctemplate引擎開(kāi)發(fā)。在這里,我只是將我這一個(gè)月學(xué)習(xí)到的,和自己的理解寫(xiě)出來(lái)。如果有不正確,或者描述不準(zhǔn)確的地方,希望大家能批評(píng)指出2012-03-03php smarty 二級(jí)分類(lèi)代碼和模版循環(huán)例子
分享下最近寫(xiě)的smarty模版引擎輸出二級(jí)分類(lèi)代碼,主要是靠二維數(shù)組進(jìn)行控制輸出。2011-06-06JS中徹底刪除JSON對(duì)象組成的數(shù)組中的元素
這篇文章主要介紹了JS中徹底刪除JSON對(duì)象組成的數(shù)組中的元素,需要的朋友可以參考下2020-09-09