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:根目錄下:
使用VS.PHP的還有一個好處是其自帶了Apache Web 伺服器,因此無需另外安裝,你也可以安裝XAMP (Apache+ MySQL+PHP) ,但如需要使用MySQL,則另外需安裝MySQL.
安裝好Yii Framework之後,我們就使用VS.PHP來建立第一個PHP應用,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 應用的靜態結構
下圖展示了一個Yii 應用在處理用戶請求時典型的工作流程
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__).'/../../framework/yii.php'); $yii='C:/yiiframework/yii.php'; // 发布应用时,去掉下面代码避免产生调试信息 defined('YII_DEBUG') or define('YII_DEBUG',true); require_once($yii); // 创建一个应用实例并执行 Yii::createWebApplication()->run();
<?php // 包含Yii引导文件 //require_once(dirname(__FILE__).'/../../framework/yii.php'); $yii='C:/yiiframework/yii.php'; // 发布应用时,去掉下面代码避免产生调试信息 defined('YII_DEBUG') or define('YII_DEBUG',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 'Hello World'; } }
/** * 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 'Hello World'; } }
此时再运行应用,可以在浏览器中显示“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 子目录。
修改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中文网(www.php.cn)!

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

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

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

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

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

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

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

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


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

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

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

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

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具