YII的別名管理與物件建立管理 轉

2021-09-12 03:32:21 字數 1374 閱讀 2493

yiibase類為yii框架的執行提供了公共的基礎功能:別名管理與物件建立管理。

在建立乙個php的物件時,需要先include這個類的定義檔案,然後再new這個物件。在不同環境下(開發環境/測試環境/線上環境),apache的webroot路徑的配置可能不一樣,所以這個類的定義檔案的全路徑就會不同,yii框架通過yiibase的別名管理來解決了這個問題。

在建立物件時,需要匯入對應類的定義,經常需要使用這5個函式:include()、include_once()、require()、require_once()、set_include_path()。yii通過使用yiibase::import()來統一解決這個問題。下圖描述了yiibase提供「別名管理與物件建立管理」的工作原理。

[img]

一般情況下我們使用絕對路徑或者相對路徑來進行檔案引用,當然這2中情況都有弊端。絕對路徑:當我們的**部署到測試環境或者線上環境的時候需要大量修改被include檔案的路徑;相對路徑:當某些模組的資料夾的位置發生調整(改名)的時候,所有的相對路徑都需要修改。而使用別名的方式只需要改一處:註冊別名的時候,即yii::setpathofalias()。從而將資料夾的變動而導致的**改動集中到一處完成。

再看import功能:a、匯入乙個類的定義,從而可以建立該類的物件;b、將某個資料夾加入到include_path,從而可以直接include這個檔案下的所有檔案。yii::import相當於如下5個函式的統一:include()、include_once()、require()、require_once()、set_include_path()。而且一般情況下速度會比這些函式更快。當然yii::import支援別名的功能,從而可以解決路徑變動帶來的麻煩。

最後看一下物件的建立,在yii框架中有2中方法建立物件:1、使用new關鍵字;2、使用yii::createcomponent方法。

當使用new關鍵字建立物件時,autoload會分3步來尋找對應類的定義:a、判斷是否為framework中的類(framework的所有類和這個類的全路徑都儲存在yiibase的乙個成員變數中);2、判斷是否使用yii::import匯入了這個類,對於非框架的類,我們在建立這個類的物件時需要先import這個類的定義;3、從include_path目錄下查詢以這個類名字命名的php指令碼,所以在開發的時候類名盡量與檔名儲存一致,這樣我們匯入包含這個檔案的資料夾就行了,從而無需把這個資料夾中的每個檔案都匯入一次。

當使用yii::createcomponent方法建立物件時,它提供了比new關鍵字更多的功能:a、通過這個類的全路徑別名來指定類的位置和類名(類名必須與檔名一致),當這個類還沒有匯入的時候,會根據全路徑來自動匯入這個類的定義;2、對建立出來的物件的成員變數進行賦值。即如下圖描述,原來要寫3行以上的**,現在一行**就可以搞定(write less, do more)。

[img]

yii2之建立管理員

第一步,使用遷移檔案建表admin 先建立資料遷移檔案 小貼士,如果發現自己改錯了,需要重新修改遷移檔案 第二步,使用gii工具建立model 建立乙個新的model,繼承adminar,方便以後管理 第三步,建立乙個admin的curd 改一些樣式 新增一些admin的許可權 在admincont...

SAP MMC無法建立管理單元

這兩天發現無法將sap報表資料載入到excel表中,於是重灌了gui,發現沒有效果。於是解除安裝了gui710,裝了gui720 需要選中r 3 add on下的interactive excel元件 這樣一裝是湊效了,但後來卻發現自己的ecc6 mmc控制台壞掉了。出現 mmc無法建立管理單元。m...

ORACLE SQL建立管理表(DDL)

ddl data definition language 資料定義語言 1.表是基本的資料儲存集合,由行和列組成 表的命名規則 表名和列名 必須以字母開頭,必須在1 30之間,必須只能包含 a z,a z,0 9,和 必須不能和使用者定義的其他物件重名,必須不能是oracle 的保留字 2.資料型別...