<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          AtomCode新概念的PHP開發(fā)框架

          聯(lián)合創(chuàng)作 · 2023-09-20 18:16

          本框架暫名為: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)吧。

          瀏覽 8
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  aigao | 在线观看黄色av 欧美国产精品一二三产品在哪买 | 日韩高清精品在线 | www.青春草 | 97人妻人人揉人人躁人人 |