Yii Framework是一個基於元件、用於開發大型 Web 應用的高效能 PHP 框架。 Yii提供了今日Web 2.0應用開發所需的幾乎一切功能。 Yii是最有效率的PHP框架之一。 Yii是創辦人薛強的心血結晶,於2008年1月1日開始開發。
一個稍微大點的項目,如果按照yii產生的webapp來開發。所有的controller放到controllers資料夾下,所有的model放到models資料夾下面,如果你有 n 多個 controller 和 n 多的 model ,這種情況下維護程式碼將是一個非常痛苦的過程。為了避免這種情況,Yii 提供了一種 Modules(模組) 的目錄結構方式。
Modules(模組) 是一個獨立的單元,包含視圖、控制器和其它元件,它和一個應用的差異是不能單獨部署,模組都保存在應用的 moudules 目錄裡面。
你的專案可以分成 n 多個 Module,然後每一個 Module 有自己的 controllers 和 models 。這樣的組織架構,無論是開發,管理都要方便簡潔許多。
YII中的模組是非常靈活的,一個模組可以包含子模組。理論上,模組可以是無限嵌套。
模組的目錄結構(這裡以下面產生的目錄結構做說明)
modules 模組的存放目錄
└── admin 一個模組,模組的名字對應是目錄的名字,唯一。也是路由中的moduleid
├── components 模組使用的元件
├── controllers 包含控制器
│ └── DefaultController.## │ └── DefaultController.## │ └── DefaultController.## ## ├── models 模型類別檔案
├── AdminModule.php 模組的類別檔案
└── views 試圖檔案
── index.php視圖檔案
└── layouts 包含佈局檔案
基本的目錄結構如上,當然你可以在自己加入一些自訂的東西。
建立模組的方法(這裡我們透過yii 自帶的gii 產生器來建立模組)
<?php ...... 'modules'=>array( 'gii'=>array( 'class'=>'system.gii.GiiModule', 'password'=>'123456',//你的密码访问时需要输入 'ipFilters'=>array('127.0.0.1','::1'), ), ),然後造訪url 你的應用程式/index.php?r=gii 存取gii,開啟以後選擇,左邊選單的Module Generator 選項。你將會看到下面的畫面 在 Module ID 輸入模組的名稱,我在這裡輸入 admin ,然後點擊 Preview 按鈕。如下圖所示,它向你展示了所有將會被產生的文件,允許你在新建之前預覽他們 : 然後點擊 Generate 按鈕,來產生所有文件。因為 Web 伺服器進程需要寫入權限,所以確保你的 /protected 資料夾對於該應用程式是可寫入的。 設定使用這個模組我們對主設定檔protected/config/main.php 進行配置,如下的程式碼需要被修改,新增了'admin' :
'modules'=>array( 'gii'=>array( 'class'=>'system.gii.GiiModule', 'password'=>'你的密码', ), 'admin', ),儲存上面的修改後後,我們的新admin 模組已經可以使用了。我們可以透過以下地址存取我們創建的模組:你的應用程式/index.php?r=admin/default/index在模組中使用layout我們存取index.php?r=admin/default/index 會發現,模組使用了你的應用下的/protected/views /layouts/main.php 文件,而我們可能想要使用/protected/modules/admin/views/layouts /main.php 文件,讓admin 模組擁有獨立的佈局視圖。我們可以在:protected\modules\admin\controllers\DefaultController.php 加入以下程式碼。 public $layout='application.modules.admin.views.layouts.main';我們把從/protected/views/layouts/main.php 拷貝到/protected/modules/ admin/views/layouts/ ,稍作修改,這樣模組就擁有了獨立的佈局視圖。 在模組中使用Assets新增新的模組時,一般會包含映像文件,CSS文件,JavaScript文件等。 模組可以直接從網站主目錄中引用。但是如果想要創建一個模組能夠在任何地方引用,並且能夠避免命名衝突,就要用到assets了。 過程是(這裡模組名稱是admin):1、把需要用到的資源放在modules/admin/assets下。 2、然後透過CAssetManager,Yii::app()->assetManager 能夠自動的將私有資源publish 到公用目錄下網站目錄/assets3、Yii 會自動在網站目錄的/assets 下創建一個隨機不衝突的資料夾,如2b31b42b,並把你的modules/admin/assets目錄下的文件拷貝過去。 例如我的模組是Admin,檔案路徑透過如下程式碼取得,修改protected\modules\admin\AdminModule.php檔案。
class AdminModule extends CWebModule{ private$_assetsUrl; $this->_assetsUrl=Yii::app()->getAssetManager()->publish(Yii::getPathOfAlias('application.modules.admin.assets')); return$this->_assetsUrl; } public function setAssetsUrl($value){ $this->_assetsUrl=$value; } }
然后,在 /protected/modules/admin/views/layouts/main.php 中使用 $this->module->assetsUrl 就可以调用你的css等文件了。模板文件的代码如下:
<link rel="stylesheet" type="text/css" href="<?php echo $this->module->assetsUrl; ?>/css/screen.css" />
4,通过如上操作,该模块只要把admin目录拷贝,就可以多次复用了。
模块的配置,使用方法
在配置文件 /config/main.php 中:
配置文件中也可以及添加对模块中属性初始化的参数例如:
'modules'=>array('admin'=>array('web_url'=>'www.phpernote.com'),
对应在 Controller 中的访问方式是:
Yii::app()->controller->module->web_url;
作为程序员,我们要知道,Yii是一个基于组件的高性能PHP框架,用于开发大型Web应用。Yii采用严格的OOP编写,并有着完善的库引用以及全面的教程。从 MVC,DAO/ActiveRecord,widgets,caching,等级式RBAC,Web服务,到主题化,I18N和L10N,Yii提供了今日Web 2.0应用开发所需要的几乎一切功能。事实上,Yii是最有效率的PHP框架之一。
希望本节内容能让大家在Yii框架上有更多的收获。
相关推荐:
以上是Yii framework框架模組開發的詳細內容。更多資訊請關注PHP中文網其他相關文章!

在PHP中,可以使用session_status()或session_id()來檢查會話是否已啟動。 1)使用session_status()函數,如果返回PHP_SESSION_ACTIVE,則會話已啟動。 2)使用session_id()函數,如果返回非空字符串,則會話已啟動。這兩種方法都能有效地檢查會話狀態,選擇使用哪種方法取決於PHP版本和個人偏好。

sessionsarevitalinwebapplications,尤其是在commercePlatform之前。

在PHP中管理並發會話訪問可以通過以下方法:1.使用數據庫存儲會話數據,2.採用Redis或Memcached,3.實施會話鎖定策略。這些方法有助於確保數據一致性和提高並發性能。

PHPsessionshaveseverallimitations:1)Storageconstraintscanleadtoperformanceissues;2)Securityvulnerabilitieslikesessionfixationattacksexist;3)Scalabilityischallengingduetoserver-specificstorage;4)Sessionexpirationmanagementcanbeproblematic;5)Datapersis

負載均衡會影響會話管理,但可以通過會話複製、會話粘性和集中式會話存儲解決。 1.會話複製在服務器間複製會話數據。 2.會話粘性將用戶請求定向到同一服務器。 3.集中式會話存儲使用獨立服務器如Redis存儲會話數據,確保數據共享。

Sessionlockingisatechniqueusedtoensureauser'ssessionremainsexclusivetooneuseratatime.Itiscrucialforpreventingdatacorruptionandsecuritybreachesinmulti-userapplications.Sessionlockingisimplementedusingserver-sidelockingmechanisms,suchasReentrantLockinJ

PHP會話的替代方案包括Cookies、Token-basedAuthentication、Database-basedSessions和Redis/Memcached。 1.Cookies通過在客戶端存儲數據來管理會話,簡單但安全性低。 2.Token-basedAuthentication使用令牌驗證用戶,安全性高但需額外邏輯。 3.Database-basedSessions將數據存儲在數據庫中,擴展性好但可能影響性能。 4.Redis/Memcached使用分佈式緩存提高性能和擴展性,但需額外配

Sessionhijacking是指攻擊者通過獲取用戶的sessionID來冒充用戶。防範方法包括:1)使用HTTPS加密通信;2)驗證sessionID的來源;3)使用安全的sessionID生成算法;4)定期更新sessionID。


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

WebStorm Mac版
好用的JavaScript開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

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

Dreamweaver CS6
視覺化網頁開發工具

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