Phpbean路由轉寄的php代碼

來源:互聯網
上載者:User

第一步:入門
如何使用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';
}

}
?>

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.