首頁  >  文章  >  後端開發  >  PHP開發框架Yii Framework教程(1) 第一個應用Hello World

PHP開發框架Yii Framework教程(1) 第一個應用Hello World

黄舟
黄舟原創
2017-01-21 09:24:011367瀏覽

Yii Framework 教學可以參考官方中文文件 ,那為什麼還要寫這個開發教學呢? 本教學目的是透過不同的視角(主要是透過開發Windows應用C++,C#程式設計師的角度)來幫助Windows 桌面應用或ASP.NET程式設計師較快的掌握PHPYii Framework應用程式框架。 使用PHP開發Web應用的一個重要好處是可以應用於各種作業系統(Unix,Windows,Mac OS),而不像Asp.Net一般只能應用在Windows作業系統上。使用PHP+Apache+MySQL(XMAP/LAMP) 幾乎可以打遍天下無敵手:-)。

本教學所使用的作業系統為Windows,開發IDE為 VS.PHP,之所以使用這個開發環境是因為VS.PHP採用Visual Studio 作為IDE ,對於Visual Studio開發人員比較熟悉。而且可以用來同時開發調試C#,PHP應用。 Yii Framework 本身和IDE無關,你可以使用你喜歡的PHP開發工具來開發Yii 應用程式(例如Eclipse)。關於VS.PHP的介紹可以參考 VS.PHP + YiiFramework 組合開發PHP應用。本教學關於Yii Framework知識也和開發IDE無關,可以應用到各種開發環境,你可以選擇你自己喜歡的開發環境。

在創建第一個應用程式之間,需要下載Yii 開發包,下載可以到Yii網站http://www.yiiframework.com/download/ 下載,目前版本為1.1.12, 下載後直接解壓,為方便起見將其解壓縮到C:根目錄下:

PHP開發框架Yii Framework教程(1) 第一個應用Hello World


使用VS.PHP的還有一個好處是其自帶了Apache Web 伺服器,因此無需另外安裝,你也可以安裝XAMP (Apache+ MySQL+PHP) ,但如需要使用MySQL,則另外需安裝MySQL.

安裝好Yii Framework之後,我們就使用VS.PHP來建立第一個PHP應用,Hello World。

PHP開發框架Yii Framework教程(1) 第一個應用Hello World

VS.PHP 建立HelloWorld項目,並新增一個index.php 檔案。

此時修改index.php 為

<?php  
print "Hello, World!";  
  
?>
<?php  
print "Hello, World!";  
  
?>

按F5運行程序,VS.PHP打開確省瀏覽器,顯示“Hello,World!”. 但這不是一個Yii應用! ! ! ,我們還沒有使用Yii Web應用程式框架,Yii Framework是一個純粹物件導向的應用程式框架。其Web程式的Application類別為CWebApplication類別。並採用了MVC模型。

面的示意圖展示了Yii 應用的靜態結構

PHP開發框架Yii Framework教程(1) 第一個應用Hello World

下圖展示了一個Yii 應用在處理用戶請求時典型的工作流程

PHP開發框架Yii Framework教程(1) 第一個應用Hello World

.example.com/index.php?r=post/show&id=1 的請求, Web 伺服器透過執行入口腳本index.php 處理此請求。

入口腳本建立了一個 應用 實例並執行。

應用程式從一個稱為 request 的 應用元件 中獲得了使用者請求的詳細資訊。

應用在一個名叫 urlManager 的應用元件的幫助下,決定要求的 控制器 和 動作 。在這個例子中,控制器是 post,它代表 PostController 類別; 動作是 show ,其實際意義由控制器決定。

應用程式建立了一個所請求控制器的實例以進一步處理使用者請求。控制器決定了動作 show 指向控制器類別中的一個名為 actionShow 的方法。然後它創建並持行了與動作關聯的過濾器(例如存取控制,基準測試)。 如果過濾器允許,動作將被執行。

動作從資料庫讀取一個 ID 為 1 的 Post 模型。

動作透過 Post 模型渲染一個名為 show 的 視圖。

視圖讀取並顯示 Post 模型的屬性。

視圖執行一些 小物件。

視圖的渲染結果被插入一個 佈局。

動作完成視圖渲染並呈現給使用者。

Yii應用程式本身有很多配置,例如確診的Controller ,action是否使用Log檔等。對於Hello,World這個簡單的應用,就全部使用預設值。預設的Controller為SiteController, Action為indexAction.  也就是說,例如你的網站為www.guidebee.com  ,如果你採用Yii Framework, 用戶請求www.guidebee.com時,Yii 應用的CWebApplication 將創建類SiteController的實例並呼叫SiteController的indexAction方法,(相當於C# Console所應用的Program 的main方法)。

Yii 專案使用不同的目錄來存放Controller,Action,View,Layout等,其預設目錄結構如下

testdrive/
  index.php                 Web 應用入口腳本檔案
  index-test.php          包含公開的資源文件
  css/                      包含CSS 檔案
  images/            包含應用主詞
  protected/                包含受保護的應用檔案
     yiic                 Windows 下的yiic 命令列腳本
     yiic.php               yiic 命令列PHP 腳本
      shell/包含自訂的'yiic shell' 指令
     components/            包含可重複使用的使用者元件
        Controller.php 用來認證的'Identity' 類別
     config/                包含設定檔
        console. php         控制台應用設定
        main.php            Web 應用設定                 包含控制器的類別檔案
        SiteController.php  預設控制器的類別檔案
     data/      .sql    範例MySQL 資料庫
        schema.sqlite.sql   範例SQLite 資料庫
        testdrive.db    第三方擴充
     messages/              login' 動作的表單模型
        ContactForm.php     'contact' 動作的表單模型
     runtime/             包含測試腳本
     views/                 包含控制器的檢視與版面配置檔案
       layouts/  main.php         所有視圖的預設佈局
           column1.php      使用單列頁面使用的佈局
       使用單列頁面使用的佈局
         site/               包含'site' 控制器的視圖檔案
           pages/           包含在靜態中」頁
              about.php     "about" 頁面的檢視
           contact.    'error' 動作的視野(顯示外在錯誤)
           index.php        'index' 動作的觀點
     login' 動作的視圖
        system/             包含系統檢視檔案

这个目录结构可以通过Yii自带的工具来创建缺省的文件建立第一个 Yii 应用。

对于Hello World项目来说,没有必要这么复杂,我们只需创建 protected \controllers 目录以存放SiteController.php。

每个Yii应用都有的入口脚本,可以理解为C#的Program类。这个 入口脚本大同小异

<?php  
  
// 包含Yii引导文件  
//require_once(dirname(__FILE__).&#39;/../../framework/yii.php&#39;);  
$yii=&#39;C:/yiiframework/yii.php&#39;;  
// 发布应用时,去掉下面代码避免产生调试信息  
defined(&#39;YII_DEBUG&#39;) or define(&#39;YII_DEBUG&#39;,true);  
  
require_once($yii);  
// 创建一个应用实例并执行  
  
Yii::createWebApplication()->run();
<?php  
  
// 包含Yii引导文件  
//require_once(dirname(__FILE__).&#39;/../../framework/yii.php&#39;);  
$yii=&#39;C:/yiiframework/yii.php&#39;;  
// 发布应用时,去掉下面代码避免产生调试信息  
defined(&#39;YII_DEBUG&#39;) or define(&#39;YII_DEBUG&#39;,true);  
  
require_once($yii);  
// 创建一个应用实例并执行  
  
Yii::createWebApplication()->run();

前面说过Yii的缺省Controller为SiteController,缺省Action为actionIndex, 因此HelloWorld的SiteController代码如下

/** 
 * SiteController is the default controller to handle user requests. 
 */  
class SiteController extends CController  
{  
    /** 
     * Index action is the default action in a controller. 
     */  
    public function actionIndex()  
    {  
        echo &#39;Hello World&#39;;  
    }  
}
/** 
 * SiteController is the default controller to handle user requests. 
 */  
class SiteController extends CController  
{  
    /** 
     * Index action is the default action in a controller. 
     */  
    public function actionIndex()  
    {  
        echo &#39;Hello World&#39;;  
    }  
}

此时再运行应用,可以在浏览器中显示“Hello,World”。 目前没有使用MVC模型直接在Controller 使用echo 打印出“Hello,World”, 下面稍微修改一下代码,创建一个简单的View。

View缺省目录为protected 目录下的views 子目录,和Controller类对于,比如SiteController对应到Views目录下的site子目录,和Asp.Net一样,Yii的View(对应到Asp.Net的Page类)也可以使用MasterPage,Yii应用成为Layout,缺省Layout存放在views的layouts 子目录。

PHP開發框架Yii Framework教程(1) 第一個應用Hello World

修改SiteController的actionIndex 方法,改为:

public function actionIndex()  
{  
 $this->render("index");  
}
public function actionIndex()  
{  
 $this->render("index");  
}

View 视图是一个包含了主要的用户交互元素的PHP脚本.他可以包含PHP语句,但是我们建议这些语句不要去改变数据模型,且最好能够保持其单纯性(单纯作为视图)。为了实现逻辑和界面分离,大段的逻辑应该被放置于控制器或模型中,而不是视图中,视图有一个名字,当渲染(render)时,名字会被用于识别视图脚本文件。

actionIndex 通过render 方法来显示一个View,对应到views->site 目录下的 index.php 。render 缺省使用views ->layouts 下的 main.php 作为 Layout (布局,MasterPage)

布局是一种用来修饰视图的特殊的视图文件.它通常包含了用户界面中通用的一部分视图.例如:布局可以包含header和footer的部分,然后把内容嵌入其间.

......header here......

......footer here......

其中的 $content 则储存了内容视图的渲染结果.

来看一下View是目录下的index.php (View) 代码:

<?php echo "Hello,World!"; ?>
<?php echo "Hello,World!"; ?>

这样就完成了Hello,World的MVC模型,运行显示“Hello,World”。

PHP開發框架Yii Framework教程(1) 第一個應用Hello World

以上就是PHP开发框架Yii Framework教程(1) 第一个应用Hello World的内容,更多相关内容请关注PHP中文网(www.php.cn)!


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn