搜尋
首頁後端開發php教程PHP開發框架Yii Framework教程(1) 第一個應用Hello World

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
簡單地說明PHP會話的概念。簡單地說明PHP會話的概念。Apr 26, 2025 am 12:09 AM

phpsessionstrackuserdataacrossmultiplepagerequestsusingauniqueIdStoredInAcookie.here'showtomanageThemeffectionaly:1)startAsessionWithSessionWwithSession_start()和stordoredAtain $ _session.2)

您如何循環中存儲在PHP會話中的所有值?您如何循環中存儲在PHP會話中的所有值?Apr 26, 2025 am 12:06 AM

在PHP中,遍歷會話數據可以通過以下步驟實現:1.使用session_start()啟動會話。 2.通過foreach循環遍歷$_SESSION數組中的所有鍵值對。 3.處理複雜數據結構時,使用is_array()或is_object()函數,並用print_r()輸出詳細信息。 4.優化遍歷時,可採用分頁處理,避免一次性處理大量數據。這將幫助你在實際項目中更有效地管理和使用PHP會話數據。

說明如何使用會話進行用戶身份驗證。說明如何使用會話進行用戶身份驗證。Apr 26, 2025 am 12:04 AM

會話通過服務器端的狀態管理機制實現用戶認證。 1)會話創建並生成唯一ID,2)ID通過cookies傳遞,3)服務器存儲並通過ID訪問會話數據,4)實現用戶認證和狀態管理,提升應用安全性和用戶體驗。

舉一個如何在PHP會話中存儲用戶名的示例。舉一個如何在PHP會話中存儲用戶名的示例。Apr 26, 2025 am 12:03 AM

Tostoreauser'snameinaPHPsession,startthesessionwithsession_start(),thenassignthenameto$_SESSION['username'].1)Usesession_start()toinitializethesession.2)Assigntheuser'snameto$_SESSION['username'].Thisallowsyoutoaccessthenameacrossmultiplepages,enhanc

哪些常見問題會導致PHP會話失敗?哪些常見問題會導致PHP會話失敗?Apr 25, 2025 am 12:16 AM

PHPSession失效的原因包括配置錯誤、Cookie問題和Session過期。 1.配置錯誤:檢查並設置正確的session.save_path。 2.Cookie問題:確保Cookie設置正確。 3.Session過期:調整session.gc_maxlifetime值以延長會話時間。

您如何在PHP中調試與會話相關的問題?您如何在PHP中調試與會話相關的問題?Apr 25, 2025 am 12:12 AM

在PHP中調試會話問題的方法包括:1.檢查會話是否正確啟動;2.驗證會話ID的傳遞;3.檢查會話數據的存儲和讀取;4.查看服務器配置。通過輸出會話ID和數據、查看會話文件內容等方法,可以有效診斷和解決會話相關的問題。

如果session_start()被多次調用會發生什麼?如果session_start()被多次調用會發生什麼?Apr 25, 2025 am 12:06 AM

多次調用session_start()會導致警告信息和可能的數據覆蓋。 1)PHP會發出警告,提示session已啟動。 2)可能導致session數據意外覆蓋。 3)使用session_status()檢查session狀態,避免重複調用。

您如何在PHP中配置會話壽命?您如何在PHP中配置會話壽命?Apr 25, 2025 am 12:05 AM

在PHP中配置會話生命週期可以通過設置session.gc_maxlifetime和session.cookie_lifetime來實現。 1)session.gc_maxlifetime控制服務器端會話數據的存活時間,2)session.cookie_lifetime控制客戶端cookie的生命週期,設置為0時cookie在瀏覽器關閉時過期。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具