Yaf_Controller_Abstract

引用,致謝

參照鳥(niǎo)哥Yaf文檔呕童,直達(dá)鏈接

Yaf_Controller_Abstract對(duì)象

abstract Yaf_Controller_Abstract {
    /** 參數(shù) **/
    protected array actions ;
    protected Yaf_Request_Abstract _request ;
    protected Yaf_Response_Abstract _response ;
    protected Yaf_View_Interface _view ;
    protected string _script_path ;
    /** 方法 **/
    private void __construct ( void );
    public void init ( void );
    public string getModuleName ( void );
    public Yaf_Request_Abstract getRequest ( void );
    public Yaf_Response_Abstract getResponse ( void );
    public Yaf_View_Interface getView ( void );
    public Yaf_View_Interface initView ( void );
    public boolean setViewPath ( string $view_directory );
    public string getViewPath ( void );
    public Yaf_Response_Abstract render ( string $action_name , array $tpl_vars = NULL );
    public boolean display ( string $action_name , array $tpl_vars = NULL );
    public boolean forward ( string $action , array $invoke_args = NULL );
    public boolean forward ( string $controller , string $action , array $invoke_args = NULL );
    public boolean forward ( string $module , string $controller , string $action , array $invoke_args = NULL );
    public boolean redirect ( string $url );
}

1. actions功能(獨(dú)立action译打,同yii的actions)

1.1 使用場(chǎng)景
  1. 當(dāng)Controller文件很大時(shí),把a(bǔ)ction拆出去跳仿。
  2. 多個(gè)Controller調(diào)用一個(gè)action,把a(bǔ)ction提出竿音,用此功能調(diào)用。
1.2 如何使用拴驮?

1.添加actions,key為action名,value為action所在路徑春瞬。路徑的根是application目錄。下面栗子的路徑application/actions/Login.php

<?php
class IndexController extends Yaf_Controller_Abstract{
    public $actions = [
        "login" => "actions/Login.php"
    ];
}

2.創(chuàng)建Login.php套啤,添加execute方法

注意class加Action宽气,引入的yafAction類,execute為入口
<?php
class LoginAction extends Yaf_Action_Abstract{
    public function execute(){
        echo __CLASS__ .":" . __FUNCTION__;
        exit;
    }
}

2.參數(shù)

  • _request潜沦,請(qǐng)求實(shí)例萄涯,屬性值由Yaf_Dispatcher保證,可用getRequest()獲取
  • _response, 響應(yīng)實(shí)例唆鸡,屬性值由Yaf_Dispatcher保證涝影,可用getResponse()獲取
  • _view,視圖引擎争占,調(diào)用Yaf_Controller_Abstract::getView或Yaf_Controller_Abstract::initView才能使用燃逻,延時(shí)實(shí)例化來(lái)提高性能(因?yàn)閅af采用延遲實(shí)例化視圖引擎的策略, 所以只有在使用前調(diào)用此方法, 視圖引擎才會(huì)被實(shí)例化)
  • _script_path序目,視圖文件目錄,屬性值由Yaf_Dispatcher保證唆樊,可通過(guò)Yaf_Controller_Abstract::setViewPath來(lái)改變

3.方法

3.1 getRequest宛琅,獲取請(qǐng)求實(shí)例,Yaf_Request_Abstract
3.2 getResponse逗旁,獲取響應(yīng)實(shí)例嘿辟,Yaf_Response_Abstract
3.3 getView,獲取當(dāng)前視圖引擎片效,Yaf_View_Interface红伦。獲取的就是 _view
3.4 initView,初始化視圖引擎(yaf為性能淀衣,不會(huì)加載昙读。所以要使用前,手動(dòng)加載)膨桥,Yaf_View_Interface蛮浑。??不初始化也可以使用_view,和文檔描述不一致
3.5 setViewPath只嚣,設(shè)置視圖模板根目錄(絕對(duì)路徑)沮稚,模板路徑=根目錄+控制器名+模板名
3.6 getViewPath,獲取視圖模板根目錄(絕對(duì)路徑)
3.7 render册舞,返回渲染結(jié)果蕴掏。輸出需手動(dòng)echo
//效果同$this->display("out",["param1"=>"login out"]);
echo $this->render("out",["param1"=>"login out"]);
3.8 display,直接輸出渲染結(jié)果调鲸,display之后代碼依然執(zhí)行
//指定模板根目錄
$this->setViewPath(APP_PATH."/application/views/Login/");
//模板文件路徑: application/views/Login/{控制器名}/out.phtml
$this->display("out",["param1"=>"login out"]);
 
//模板文件路徑: application/views/{控制器名}/Login.phtml
$this->display("Login",["param1"=>"hello world"]);
sleep(1);
echo "end";//模板內(nèi)容后盛杰,輸出end
3.9 forward,請(qǐng)求其他action藐石,比如未登錄跳轉(zhuǎn)到登錄頁(yè)即供。不會(huì)立即跳轉(zhuǎn),當(dāng)天action處理完才會(huì)調(diào)到下一個(gè)于微,module募狂、controller、action的入?yún)⒃O(shè)計(jì)很人性角雷,按數(shù)量從小到大排列
$this->forward("Login","out");
sleep(1);
echo "hello world";//先執(zhí)行sleep和echo祸穷,然后調(diào)用Login控制器的out方法,輸出帶有hello world
3.10 redirect勺三,重定向到新地址雷滚。action代碼執(zhí)行完成后再跳轉(zhuǎn)。多個(gè)redirect吗坚,最后一個(gè)為結(jié)果
$this->redirect("/Login/");//跳轉(zhuǎn)到Login控制器祈远,執(zhí)行indexAction呆万。也可指定action,如/Login/out
$this->redirect("http://www.baidu.com");跳轉(zhuǎn)到外部地址
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末车份,一起剝皮案震驚了整個(gè)濱河市谋减,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌扫沼,老刑警劉巖出爹,帶你破解...
    沈念sama閱讀 222,378評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異缎除,居然都是意外死亡严就,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,970評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門器罐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)梢为,“玉大人,你說(shuō)我怎么就攤上這事轰坊≈” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,983評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵肴沫,是天一觀的道長(zhǎng)粟害。 經(jīng)常有香客問(wèn)我,道長(zhǎng)樊零,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,938評(píng)論 1 299
  • 正文 為了忘掉前任孽文,我火速辦了婚禮驻襟,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘芋哭。我一直安慰自己沉衣,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,955評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布减牺。 她就那樣靜靜地躺著豌习,像睡著了一般。 火紅的嫁衣襯著肌膚如雪拔疚。 梳的紋絲不亂的頭發(fā)上肥隆,一...
    開(kāi)封第一講書(shū)人閱讀 52,549評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音稚失,去河邊找鬼栋艳。 笑死,一個(gè)胖子當(dāng)著我的面吹牛句各,可吹牛的內(nèi)容都是我干的吸占。 我是一名探鬼主播晴叨,決...
    沈念sama閱讀 41,063評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼矾屯!你這毒婦竟也來(lái)了兼蕊?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,991評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤件蚕,失蹤者是張志新(化名)和其女友劉穎孙技,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體骤坐,經(jīng)...
    沈念sama閱讀 46,522評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡绪杏,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,604評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了纽绍。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蕾久。...
    茶點(diǎn)故事閱讀 40,742評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖拌夏,靈堂內(nèi)的尸體忽然破棺而出僧著,到底是詐尸還是另有隱情,我是刑警寧澤障簿,帶...
    沈念sama閱讀 36,413評(píng)論 5 351
  • 正文 年R本政府宣布盹愚,位于F島的核電站,受9級(jí)特大地震影響站故,放射性物質(zhì)發(fā)生泄漏皆怕。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,094評(píng)論 3 335
  • 文/蒙蒙 一西篓、第九天 我趴在偏房一處隱蔽的房頂上張望愈腾。 院中可真熱鬧,春花似錦岂津、人聲如沸虱黄。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,572評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)橱乱。三九已至,卻和暖如春粱甫,著一層夾襖步出監(jiān)牢的瞬間泳叠,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,671評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工茶宵, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留析二,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,159評(píng)論 3 378
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像叶摄,于是被迫代替她去往敵國(guó)和親属韧。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,747評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • 快速開(kāi)始 典型的目錄結(jié)構(gòu) 入口文件 所有請(qǐng)求的入口, 一般都借助于rewrite規(guī)則, 把所有的請(qǐng)求都重定向到這個(gè)...
    零一間閱讀 3,786評(píng)論 0 8
  • 在前一章中我們已經(jīng)感受到完全用React來(lái)管理應(yīng)用數(shù)據(jù)的麻煩蛤吓,在這一章中宵喂,我們將介紹Redux這種管理應(yīng)用...
    六個(gè)周閱讀 989評(píng)論 0 8
  • 介紹 Yaf框架是一個(gè)c語(yǔ)言編寫(xiě)的PHP框架,是一個(gè)以PHP擴(kuò)展形式提供的PHP開(kāi)發(fā)框架会傲,相比于一般的PHP框架锅棕,...
    簡(jiǎn)單方式閱讀 18,684評(píng)論 1 44
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒(méi)有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,113評(píng)論 1 32
  • 1、什么是框架淌山? 框架就是一組程序的集合裸燎,本質(zhì)上是一組jar包的集合,jar包中存有class文件或一些資源文件泼疑。...
    Yulin_ZH閱讀 974評(píng)論 1 1