<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                # M2有哪些特點 M2是基于`zend framework`框架的,只不過在它身上加了一層華麗的皮,隱藏了`zend framework`的底層接口,封裝了自己的接口。 所有我們寫代碼的時候,只需要調用M2自己的類和方法就行。 ![](https://box.kancloud.cn/36d51d84ccff49bded8f9233664ae58d_1200x900.png) 如果說Linux一切設備皆文件,那么M2一切設計皆XML。 不管是主題還是插件還是API還是數據庫 都有XML的身影,正因為它,M2才這么靈活強大! 如下幾個特點 算是很牛逼到位之處: ## 頁面xml布局 讓你在不動源碼的情況下,盡情任意修改頁面布局。 每個頁面都有唯一的辨識符的xml文件,這個頁面的布局都由該xml生成,你可以任意增刪改這個xml文件,實現各種效果。 xml文件里放的是各種block,這個block就是每個塊,真正輸出內容的地方。 以產品詳情頁為例: ![](https://box.kancloud.cn/1749c8311ce694cdc76474490bb8698a_720x460.png) 可以看到非常靈活,至于具體怎么增刪改,我們在`Magento2主題`這一章節具體講解。 ## 數據庫EAV結構 > `E` ->實體 > `A` -> 屬性 > `V` -> 值 EAV模型是一種數據模型,用于描述實體的數量預計會很大,但事實上,實體中要使用的屬性數量并不多。 M2這么設計,其實說白了就是為了靈活性,在不影響主干的基礎上,任意新增刪除屬性。 EAV模型說白了就是分表,不需要把所有字段都放在主表里,而是按類型存放在不同的副表上。 對于字段少的項目來說 EAV其實沒啥用 效率不高。 > 按照常規做法,比如一個產品的所有相關屬性都會存放在產品表里,增刪改查的都是這一個表。 > EAV模式 就是把這些屬性按照類型獨立分開存放到不同表里的。 > 所有查詢屬性值的時候會比較麻煩 要聯表查詢。 > 不過M2里不用擔心,他提供了非常簡單的方法,直接get屬性名就得到值了,不需要你手動去寫sql查表。 ~~~ 實體存儲的是數據類型的信息。 就Magento而言,就是Customer,Category,Product等。 屬性是每個實體的單獨屬性(比如name,weight,email)。 值是實體某個屬性的值。 ~~~ 比如,產品有個屬性叫產地(Manufacture),它的值為中國。 那么產品就是實體,Manufacture就是屬性,中國就是值。 EAV模型帶來的好處如下: 1. 靈活的多功能數據結構(可以在不更改數據庫模式的情況下更改屬性數量)。 2. 為給定實體添加新屬性時,我們有可能在其他實體中使用它 3. 快速實施。 EAV實體的數據庫模式: 1. eav_entity - (E)實體表。 2. eav_entity_attribute(A)屬性表 3. eav_entity_ {type}(V) - 值表。{type} - datetime,decimals,int,text和varchar。 4. eav_attribute 里面是所有實體的屬性 帶有eav_ *表格的圖表: ![](https://box.kancloud.cn/b82e0d2883d05db4fcb83df5815a64ac_1600x1356.png) Magento 2中有哪些EAV實體: 實體列表可以在eav_entity_type表中找到: > customer > customer_address > catalog_category > catalog_product > order > invoice > creditmemo > shipment Magento 2中有哪些EAV屬性類型: > eav_entity_int > eav_entity_varchar > eav_entity_text > eav_entity_decimal > eav_entity_datetime 這5種屬性類型就相當于字段類型。 * `int` 對應mysql字段的int類型 * `varchar` 對應mysql字段的varchar類型 * `text` 對應mysql字段的text類型 * `decimal` 對應mysql字段的decimal類型 * `datetime`對應mysql字段的datetime類型 比如產品的name 是varchar類型。 他的值存在catalog_product_entity_varchar表里。 知道了這個原理,你就很輕松的知道屬性和值在哪個表里。 聰明的你會覺得,把屬性分散存在不同的表里,如果要查詢全部屬性的話,要聯十幾張表,是不是太耗資源了? 這點,M2官方也考慮到了,以產品為例,他提供了catalog_product_flat表,也就是說后臺開啟flat模式后,查產品數據就直接讀取這個表,他把屬性都存放在這個表里了。 catalog_product_flat是按store id來分的。如果你有多網店的話。 比如: ~~~ catalog_product_flat_1 //代表store id為1的所有產品數據 catalog_product_flat_2 ////代表store id為2的所有產品數據 ~~~ ## 緩存 俗話說東西吃多了就變胖了,胖了就不靈活了,走路都喘氣。 M2是個靈活的胖子,他的緩存是其殺手锏。 ![](https://box.kancloud.cn/eb5b9b911f52cac037b69706b5ac2721_2188x1262.png) 可以看到,緩存的類型多不勝數,后臺輕松設置。 默認是開啟了全部緩存類型。 緩存多了 也有很多弊端,就是對開發者不友好,導致開發過程中改了代碼后 發現前臺頁面總是不生效,折騰半天 原來是緩存的問題。 所以我建議是開發版本里禁用所有緩存。 線上版本開啟所有緩存。 我們剛開始不需要搞清楚所有緩存類型代表什么意思。等你熟悉一段時間后 再研究會更明白。 以后如果有高級課程的話,我會一個個分析講解。 ## 模塊化 composer是個好東西,希望你會用。 m2的核心代碼都是模塊化的,可以任意開啟禁用。 同理,第三方插件和主題也都是模塊化的,可以通過composer來安裝升級或者打包上傳。 如果你安裝了第三方插件或者看M2的核心代碼的話,你會發現都有composer.json這個玩意。 這個就是用來安裝/打包上傳插件的。里面定義了各種依賴庫以及插件源地址 ## 安全性 M2的安全性也是其殺手锏,幾乎沒有被黑過。 社區會每隔1-2個月出安全補丁,自己下載安裝就行。 老版本也會出對應的安全補丁。 ## 社區活躍 群里有個小伙子說他經常混https://magento.stackexchange.com 和https://stackoverflow.com/。 幾乎能找到任何你遇到的magento問題帖子并解決。 官方社區為https://community.magento.com/ 里面也非常活躍,只要你問問題,肯定會得到答案。 所以,有這么多活躍的玩家,這么靠譜的官方,沒理由不火,沒理由不去用。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看