Vendor目錄下的包,了解Yii2用了什么類(lèi)庫(kù)。
punycode.js - “Punycode是一個(gè)根據(jù)RFC 3492標(biāo)準(zhǔn)而制定的編碼系統(tǒng),主要用於把域名從地方語(yǔ)言所采用的Unicode編碼轉(zhuǎn)換成為可用於DNS系統(tǒng)的編碼。Punycode可以防止所謂的IDN欺騙。”(百度知道)
這個(gè)庫(kù)的作用應(yīng)該是這樣的。是一個(gè)轉(zhuǎn)碼的工具。
typeaheade.js - 是Bootstrap的一個(gè)autocomplete插件,我覺(jué)得很有用。例如用戶(hù)在搜索欄輸入p, 搜索欄下面會(huì)顯示PHP。 前提當(dāng)然是需要把數(shù)據(jù)準(zhǔn)備好。autocomplete雖然是一個(gè)很小的功能,但我覺(jué)得很多網(wǎng)站都沒(méi)做好這個(gè)小功能,可能是因?yàn)闀r(shí)間的關(guān)系。這個(gè)小功能對(duì)用戶(hù)體驗(yàn)還是挺重要的。
inputmask.js - “Inputmask 是一個(gè) jQuery 輸入插件,用于創(chuàng)建確保讓用戶(hù)能夠按預(yù)先定義好格式輸入的文本框。這些格式可以是日期,數(shù)字,電話(huà)號(hào)碼等。”(http://f2ex.cn/inputmask-jquery/)
codeception是關(guān)于PHP測(cè)試的類(lèi)庫(kù),下面有base, specify 和 verify。
doctrine, instantiator。 “The instaniator is able to create new instances of any class without using the constructor or any API of the class itself:”;
應(yīng)該是創(chuàng)建新實(shí)例的類(lèi)。很有用。
ezyang, htmlpurifier. 這個(gè)一看名字就知道是html過(guò)濾器,防止XSS攻擊的。很重要的庫(kù)。
fzaninotto, faker。 創(chuàng)建假數(shù)據(jù)應(yīng)用于開(kāi)發(fā)時(shí)的需要。
guzzlehttp, psr7。 這個(gè)應(yīng)該是新規(guī)范,百度的資料不多。“This repository contains a full PSR07 message implementation, serveral stream decorators, and some helpful functionality like query string parsing.” 然后還有Stream implementation。 這個(gè)應(yīng)該是高級(jí)內(nèi)容,慢慢了解。
myclabs, deep-copy. 一看就知道是深拷貝,是拷貝對(duì)象的。 Javascript里面也有深淺拷貝。這個(gè)包還說(shuō):"It is designed to handle cycles in the association graph."。
phpunit- 應(yīng)該是php代碼測(cè)試模塊
symfony- Yii 有使用symfony的一些工具,有空的話(huà)可以討論一些symfony,感覺(jué)也是很強(qiáng)大的一個(gè)框架。
yiisoft 里面是yii的一些工具。
按照文檔在SiteControler里面創(chuàng)建actionSay方法,然后用render函數(shù)傳遞給視圖,URL訪問(wèn),成功。
然后我嘗試一下把a(bǔ)ction去掉,只創(chuàng)建Say方法,竟然訪問(wèn)不了,顯示Object not found。這個(gè)有趣,TP5應(yīng)該不會(huì)出現(xiàn)這種情況。
文檔里面寫(xiě)到:“Yii 使用 action 前綴區(qū)分普通方法和操作。 action 前綴后面的名稱(chēng)被映射為操作的 ID。”
Yii::$app, 這個(gè)很重要,之前看到這個(gè)都不太懂什么意思。 “Yii::$app代表應(yīng)用實(shí)例,它是一個(gè)全局可訪問(wèn)的單例。同時(shí)它也是一個(gè)服務(wù)定位器,能提供request, response,db等特定功能的組件?!?我的理解是這個(gè)實(shí)例里面提供很多重要的功能,服務(wù)定位器接下來(lái)慢慢了解。
使用表單
剛開(kāi)始創(chuàng)建entry.php視圖文件的時(shí)候,form表格顯示不正常,檢查后發(fā)現(xiàn) $form前面少了 = 號(hào),導(dǎo)致渲染錯(cuò)誤。
視圖使用了小部件ActiveForm生成HTML表單,很強(qiáng)大,少編寫(xiě)了很多代碼,Yii還有很多小部件等待我去發(fā)掘。
打算想拓展mobile的時(shí)候,生成HTML表單沒(méi)問(wèn)題,可是最后沒(méi)顯示號(hào)碼出來(lái),應(yīng)該是沒(méi)拿到數(shù)據(jù)的問(wèn)題。以后慢慢解決??磥?lái)還是得多寫(xiě)不同的代碼才容易發(fā)現(xiàn)問(wèn)題。
Gii
使用CRUD Generator 代碼前,一定要用 Model Generator生成相應(yīng)的Model代碼,否則會(huì)報(bào)錯(cuò)。