AtomCode新概念的PHP開發(fā)框架
本框架暫名為:AtomCode,意為原子級(jí)代碼,即是用較小量的代碼來(lái)實(shí)現(xiàn)一部分功能,再組裝成一個(gè)應(yīng)用程序。
框架基于MVC思想創(chuàng)建,對(duì)MVC不了解的同學(xué)請(qǐng)自己到其他地方了解一下這個(gè)思想(關(guān)于MVC,鏈接一,鏈接二)。在此之上,本框架加入了兩個(gè)概念:容器和用戶控件,這也是本框架可以加快開發(fā)的一個(gè)關(guān)鍵概念,Atom 也就是指的這兩個(gè)部分。
容器是什么?
容器不是杯具,它是一個(gè)可以接收無(wú)序參數(shù)的適配器,并且可以自主的處理一些邏輯。但是它不同于控制器的,控制器接收的參數(shù)都是瀏覽器傳入的和配置中的,并不能接受模板中傳入的;而容器則可以。
容器的這個(gè)特性使我們?cè)诳刂破髦卸啻沃貜?fù)的工作都避免掉了,我們?cè)谀0逯幸褂靡恍┩阮愋偷臄?shù)據(jù)時(shí)傳入不同的參數(shù)就可以了。舉個(gè)例子,我們?cè)诓煌牧斜眄?yè)面都要用到月排行和日排行這樣的數(shù)據(jù),這些數(shù)據(jù)你要在控制器中每次都獲取兩次后再傳給視圖么?No!你可以使用容器,只有一次,傳入分類ID和排序依據(jù)即可。類似的運(yùn)用好像在我們程序中使用的太多了。
用戶控件是什么?
如果說(shuō)容器是控制器的補(bǔ)充,那么用戶控件就是視圖的補(bǔ)充。我們做模板時(shí)會(huì)用到多個(gè)塊的HTML代碼基本是一樣的。那么為什么不用用戶控件來(lái)控制呢?
一般我們用這種功能時(shí)都是使用包含文件的方法來(lái)實(shí)現(xiàn),但是包含文件的缺陷就是不能傳入任何參數(shù),也就是說(shuō)這個(gè)模板只有一種包含方法。使用用戶控件并傳入了參數(shù),它也就會(huì)變得多姿多彩了。
框架的其他特性
工廠模式工廠化
這句話聽著就比較怪。這里所說(shuō)的工廠模式指的是一種設(shè)計(jì)模式。即是我們只訪問工廠類,讓工廠類給我們所需要的產(chǎn)品即可。他們內(nèi)部如何工作我們根本不管(關(guān)于工廠模式,鏈接一,鏈接二)
工廠化指的是我們創(chuàng)建的全部可擴(kuò)展的類都使用了工廠模式,如:數(shù)據(jù)庫(kù),緩存,郵件發(fā)送等。
標(biāo)簽級(jí)緩存
我們有很多的數(shù)據(jù)是不用反復(fù)查詢數(shù)據(jù)庫(kù)的,例如月排行,我們一天更新一次就可以了吧。但是頁(yè)面上的其他部分又需要時(shí)時(shí)更新,這樣如果頁(yè)面級(jí)緩存的話會(huì)導(dǎo)致那些查詢排序什么的都要每次都來(lái)(就算是mysql有查詢緩存仍然會(huì)占用很多的時(shí)間,特別是有數(shù)據(jù)更新的情況下)。
標(biāo)簽級(jí)緩存增加了數(shù)據(jù)讀取的靈活性。唯一不好的是這個(gè)是在模板中控制的。如果要在程序中控件要訪問我們的緩存類來(lái)緩存和更新了。
模型組裝
這里的模型不寫冗長(zhǎng)的SQL語(yǔ)句的(當(dāng)然復(fù)雜的還是寫的),模型把select,update,delte,insert這些都封裝了,切割成一些碎片,如你可以直接這樣寫:$this->where(),$this->join()等等。這樣雖然寫的代碼字節(jié)數(shù)會(huì)變多,但是有個(gè)好處是清晰而且易復(fù)制。當(dāng)然如果你沒有復(fù)制自己代碼的嗜好的話就不要用這個(gè)模型了,反正模型都是可以自己擴(kuò)展的。下面就講一下多模型。
多模型
模型在MVC中一直代表著數(shù)據(jù)集合,而數(shù)據(jù)有多種多樣的,模型也就變得多種多樣了。我們?cè)L問數(shù)據(jù)庫(kù)當(dāng)然訪問數(shù)據(jù)庫(kù)模型了(因?yàn)檫@類動(dòng)作較多,則作為了默認(rèn)模型),那么要生成一個(gè)圖片就用圖片模型了,訪問socket用 socket模型,控制XML用XML模型等等,你也可以擴(kuò)展出自己的模型以具有更多的功能。
私有類庫(kù)與公用類庫(kù)
這個(gè)在一般的框架都有的,但是在此也介紹一下吧。我們公用的類庫(kù)都放在了 system/libaries 下面,私有類庫(kù)則在各個(gè)應(yīng)用程序的 libaries下。
其他
還有helpers,調(diào)試日志,插件等,一起來(lái)體驗(yàn)吧。
