程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> PHP開發框架Yii Framework教程(2) Yii Web應用基礎

PHP開發框架Yii Framework教程(2) Yii Web應用基礎

編輯:PHP綜合

有了前面的“Hello,World”, Yii應用開發似乎很容易,別這麼快下結論:-),想起多年以前剛開始使用MFC開發時,寫完 第一個Hello,World之後,還是覺得無從下手,不知道怎麼開始寫MFC應用,這是因為MFC提供了大量的類庫,如果對MFC應用程 序框架和其提供的主要類庫不事先了解的話,基本上就沒辦法寫應用,學習Yii Framework,也要先了解一下組成Yii應用的幾個 主要組成部分也一些常用的類。

在前面教程說過Yii采用MVC(模型-視圖-控制器),並介紹了入口腳本和主應用程序類 CWebApplication類。應用類的實例由 入口腳本 創建為一個對象(Singleton)。這個應用單例對象可以在任何地方通過 Yii::app() 訪問。

主應用實例(CWebApplication)

默認情況下,應用是一個 CWebApplication 的實例。要自 定義它,我們通常需要提供一個配置文件 (或數組) 以創建應用實例時初始化其屬性值。自定義應用的另一種方式是繼承 CWebApplication。

配置是一個鍵值對數組。每個鍵代表應用實例中某屬性的名字,每個值即相應屬性的初始值。 例如 ,如下的配置設定了應用的 name 和 defaultController 屬性。

array(
    'name'=>'Yii Framework',
    'defaultController'=>'site',
)

我們通常在一個單獨的PHP 腳本(e.g.protected/config/main.php)中保存這些配置。在腳本中, 我們通過以下方 式返回此配置數組:

return array(...);

要應用此配置,我們將配置文件的名字作為參數傳遞給應用的構造 器,或像下面這樣傳遞到Yii::createWebApplication() 。這通常在 入口腳本 中完成:

$app=Yii::createWebApplication($configFile);

應用組件

應用的功能可以通過其靈活的組件結構 輕易地自定義或增強。應用管理了一系列應用組件,每個組件實現一特定功能。 例如,應用通過 CUrlManager 和 CHttpRequest 的幫助解析來自用戶的請求。

通過配置應用的 components 屬性, 我們可以自定義應用中用到的任何組 件類及其屬性值。例如,我們可以配置應用的 CMemCache 組件, 這樣它就可以使用多個 memcache 服務器實現緩存:

array(
    ......
    'components'=>array(
        ......
        'cache'=>array(
            'class'=>'CMemCache',
            'servers'=>array(
                array('host'=>'server1', 'port'=>11211, 'weight'=>60),
                array('host'=>'server2', 'port'=>11211, 'weight'=>40),
            ),
        ),
    ),
)

如上所示,我們在 components 數組中添加了 cache 元素。cache 元素表明此組件的類是 CMemCache, 他的servers 屬性應依此初始化。

要訪問一個應用組件,使用 Yii::app()->ComponentID ,其中的 ComponentID 是指組件的ID( 例如Yii::app()->cache)。

應用的組件可以通過在其配置中設置 enabled 為 false 禁用。當我們訪問被禁用的組 件時將返回 Null。

CWebApplication的的生命周期

當處理用戶請求時,應用將經歷如下聲明周期:

通過 CApplication::preinit() 預初始化應用;

設置類的自動裝載器和錯誤處理;

注冊核心類組件;

加載應用配置;

通過 CApplication::init() 初始化應用:

注冊應用行為;

載入靜態應用組件;

觸發 onBeginRequest 事件;

處理用戶請求:

解析用戶請求;

創建控制器;

運行控制器;

觸發 onEndRequest 事件。

CController控制類

控制器 是 CController 或其子類的實例。它在當用戶請求時由應用創建。 當一個控制器運行 時,它執行所請求的動作,動作通常會引入所必要的模型並渲染相應的視圖。 動作 的最簡形式,就是一個名字以 action 開頭 的控制器類方法。

控制器通常有一個默認的動作。當用戶的請求未指定要執行的動作時,默認動作將被執行。 默認情況 下,默認的動作名為index。它可以通過設置 CController::defaultAction 修改。

如下是一個控制器類所需的最簡代碼 。由於此控制器未定義任何動作,對它的請求將拋出一個異常。

class SiteController extends CController
{
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved