摘要:也提供了命名查詢的方式,比如需要獲取最近一個(gè)月內(nèi)發(fā)布的篇文章,如果經(jīng)常性的用到這個(gè)查詢,可以使用命名查詢的方式來寫。
這兩天用YII開發(fā)了用戶管理的功能,以前雖然也用YII框架開發(fā)過一些功能,但是總感覺對(duì)YII的使用還不是很熟練。
這次真正動(dòng)手之前,先復(fù)習(xí)了一遍 yii-guide-1.1.14.pdf 這本書,上次看的時(shí)候太過于粗略了,這次仔仔細(xì)細(xì)的閱讀了一遍。
說一下最直觀的感受
1 對(duì)于表單字段的校驗(yàn),簡化了開發(fā)工作量
記得以前寫表單驗(yàn)證,一般都是下面這樣的代碼
if (!isset($_GET["token"]){ echo "缺少參數(shù) token" return ; } $token = $_GET["token"]; if (length(token) < 8 || length(token) > 20){ echo "token 的長度應(yīng)該介于 8 到20個(gè)字符"; }
在YII框架中,會(huì)精簡為下面這樣的代碼:
return array( array("token","required"), array("token", "length","max"=>20, "min"=>8, "message"=>"token 的長度應(yīng)該介于 8 到20個(gè)字符") )
當(dāng)有很多參數(shù)需要驗(yàn)證的時(shí)候,會(huì)節(jié)省大量的驗(yàn)證代碼
2 對(duì)于數(shù)據(jù)庫操作的簡化
YII框架提供了兩種操作數(shù)據(jù)庫的方式,
一個(gè)叫YII DAO, 一個(gè)叫YII AR
YII DAO ,比較適用于編寫SQL操作數(shù)據(jù)庫的場(chǎng)景,構(gòu)造合適的SQL語句,然后交給底層的DAO幫你執(zhí)行
AR 這種方式,使用的是ORM模型,對(duì)于對(duì)象的操作一般使用 object.save(), object.delete(), object.find();
這樣的方式,AR 還提供了像是 beforeSave(), afterSave()這樣的事件處理機(jī)制,可以在對(duì)象保存的時(shí)候統(tǒng)一做一些事情,比如更新某個(gè)記錄的更新時(shí)間,創(chuàng)建時(shí)間
AR 另外提供了關(guān)聯(lián)表的操作,可以方便的對(duì)關(guān)聯(lián)表中的對(duì)象進(jìn)行獲取等等的操作,使用的是lazy load的方式,不會(huì)拖慢查詢效率。只有在明確訪問關(guān)聯(lián)表的屬性的時(shí)候,才去執(zhí)行查詢。
AR 也提供了命名查詢的方式,比如需要獲取最近一個(gè)月內(nèi)發(fā)布的10 篇文章,如果經(jīng)常性的用到這個(gè)查詢,可以使用命名查詢的方式來寫。
例如:
class Article extends CArtiveRecord{ public function scope(){ return array( "recentlyPublished" => array( "condition" => " to_days(now())-to_days(create_time) < 30 ", //設(shè)定條件,創(chuàng)建時(shí)間在30天之內(nèi) "limit" => 3 ) ); } }
然后在使用的時(shí)候就可以使用 Article::model()->recentlyPublished()->find(); 來執(zhí)行查詢
3 其他
YII框架支持?jǐn)U展,今天找了一個(gè) Yii email的擴(kuò)展,用來發(fā)送激活郵件
對(duì)于密碼的支持,從YII 1.1.14版本開始,增加了對(duì)密碼的支持,提供了一個(gè)幫助類,用來生成和校驗(yàn)密碼
對(duì)于驗(yàn)證碼的支持,內(nèi)置了生成和驗(yàn)證驗(yàn)證碼的組件,在demo中有現(xiàn)成的代碼可以參考
對(duì)于國際化的支持,雖然這個(gè)不是硬需求,但是今天還是體驗(yàn)了一下,通過 yiic message命令可以自動(dòng)生成國際化的翻譯文件,當(dāng)然,里面的內(nèi)容需要自己填寫。在最開始的時(shí)候有這樣一個(gè)框架,后續(xù)萬一有國際化的需求的話,也可以支持。
其他像是緩存組件,主題這樣的功能,現(xiàn)在還沒有用到,但是看YII框架都考慮到了,真正要寫出一個(gè)這樣的框架還是很有難度的。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/31849.html
摘要:簡述本文章是我對(duì)如何實(shí)現(xiàn)登錄做一個(gè)全面的邏輯解析。提醒注意在第步驟中,動(dòng)態(tài)獲取無的域名,此步驟必須做域名的判斷處理,比如等這些可能出現(xiàn)的域名,以保證域名都能使用實(shí)現(xiàn)登錄退出的機(jī)制。 簡述 本文章是我對(duì)Yii2如何實(shí)現(xiàn)SSO登錄做一個(gè)全面的邏輯解析。事實(shí)上,在此之前我也寫過兩篇文章關(guān)于SSO登錄的實(shí)現(xiàn)方式以及進(jìn)一步優(yōu)化,包括這篇文章也都是介紹Yii2的SSO登錄,逐步優(yōu)化不斷總結(jié)與分享,...
摘要:簡述本文章是我對(duì)如何實(shí)現(xiàn)登錄做一個(gè)全面的邏輯解析。提醒注意在第步驟中,動(dòng)態(tài)獲取無的域名,此步驟必須做域名的判斷處理,比如等這些可能出現(xiàn)的域名,以保證域名都能使用實(shí)現(xiàn)登錄退出的機(jī)制。 簡述 本文章是我對(duì)Yii2如何實(shí)現(xiàn)SSO登錄做一個(gè)全面的邏輯解析。事實(shí)上,在此之前我也寫過兩篇文章關(guān)于SSO登錄的實(shí)現(xiàn)方式以及進(jìn)一步優(yōu)化,包括這篇文章也都是介紹Yii2的SSO登錄,逐步優(yōu)化不斷總結(jié)與分享,...
摘要:簡述本文章是我對(duì)如何實(shí)現(xiàn)登錄做一個(gè)全面的邏輯解析。提醒注意在第步驟中,動(dòng)態(tài)獲取無的域名,此步驟必須做域名的判斷處理,比如等這些可能出現(xiàn)的域名,以保證域名都能使用實(shí)現(xiàn)登錄退出的機(jī)制。 簡述 本文章是我對(duì)Yii2如何實(shí)現(xiàn)SSO登錄做一個(gè)全面的邏輯解析。事實(shí)上,在此之前我也寫過兩篇文章關(guān)于SSO登錄的實(shí)現(xiàn)方式以及進(jìn)一步優(yōu)化,包括這篇文章也都是介紹Yii2的SSO登錄,逐步優(yōu)化不斷總結(jié)與分享,...
摘要:中的解決辦法面對(duì)什么的情況,在中有一個(gè)很好的方法。博客原文地址學(xué)習(xí)篇二在中借鑒的一些使用方法有很多地方都不完善,還望大家指出修正,如果你覺得這個(gè)對(duì)你有用,還請(qǐng)點(diǎn)個(gè)贊,謝謝 前段時(shí)間本來準(zhǔn)備學(xué)習(xí) Laravel 的,后來因?yàn)閾Q了工作的原因,又回到自己常用的 Yii 。現(xiàn)在要將 Laravel 重拾回來,開始學(xué)習(xí)這個(gè)被PHPer們喜愛的東西。 上一篇敢關(guān)于 Laravel 的文章 【Lar...
摘要:之前有兩篇文章寫了一些關(guān)于的和的,現(xiàn)在來全局性地看一看相對(duì)于到底有哪些改善。先說安裝方法,在中已經(jīng)使用來管理各種依賴關(guān)系,你在安裝的時(shí)候完全可以用來進(jìn)行安裝,而且,還支持兩個(gè)不同的安裝版和。 之前有兩篇文章寫了一些關(guān)于Yii 2.0的MVC和Yii 2.0的Actived Record,現(xiàn)在來全局性地看一看Yii 2.0相對(duì)于Yii 1.1到底有哪些改善。個(gè)人總結(jié)有一下幾個(gè): 1.Y...
閱讀 2545·2023-04-26 01:44
閱讀 2558·2021-09-10 10:50
閱讀 1411·2019-08-30 15:56
閱讀 2250·2019-08-30 15:44
閱讀 512·2019-08-29 11:14
閱讀 3417·2019-08-26 11:56
閱讀 3018·2019-08-26 11:52
閱讀 908·2019-08-26 10:27