我的模板分析引擎類PHP的.net開發方法–標籤設計篇

來源:互聯網
上載者:User

    在設計自己的模板分析類的時候,我遇到的第一個問題就是怎麼設計自己的標籤文法。參考與比較了眾多的標籤表現形式後,我決定使用類.net控制項的標籤表現形式。因為我認為只有這樣.net程式員才能很快的熟悉這些東東,而非.net程式員學習起來也不會太難,因為他們對基礎技術的掌握一般會比較好,只要稍微說一下就能明白是怎麼一回事。
    分析.net控制項的文法表現,我發現它只有三種標籤文法表現形式,那就是:
    1.<asp:Label id="iii" />
    2.<asp:Label id="iii"></asp:Label>
    3.<ItemTemplate></ItemTemplate>
    經過分析總結,我實現了自己的三種標籤形式如下:
    1. {label id}
    2.{view id}{/view}
    3.{itemtemplate}{/itemplate}
    這是不是看起來就很像?是的,基本上沒什麼區別,只是把<>換成了{},把key="value"直接換成了key,並且去掉了簡單標籤後面的那一丿。這所以用{}不用<>是因為<>在html代碼中是最常用的符號,而{}的使用率比較小,這樣能給剖析器省下不少比較的時間。去掉key="value"而換成key,是因為我認為自己目前只需要一個Key,那就是控制項的id;根據目前的使用方式來看,這個假設基本上是成立的。
    根據上面的標籤的設計形式,我把{label id}這種類型的叫簡單標籤,{itemtemplate}{/itemplate}叫做閉合標籤,{view id}{/view}叫複雜標籤。複雜標籤下可以有閉合標籤和簡單標籤,而閉合標籤只能存在複雜標籤中,但它的內部可以有簡單標籤和其它的複雜標籤,簡單標籤內不可能存在任何其它標籤。一個控制項可以是複雜標籤或簡單標籤,但它不能僅是閉合標籤。例如:{view id}{/view}是一個控制項,{repeater id}{itemTemplate}{/itemTemplate}{/repeater}也是一個控制項,但{itemplate}{/itempalte}卻不是一個控制項。
    有了上面的標籤形式和限定規範,我的剖析器也就比較容易寫了。首先我需要做的就是把各個標籤和它所在座標的資訊分析出來並存放在List列表裡,我的剖析器也就是這麼做的。有了這些資訊再進行自己的控制項的構建也就是一件再也輕鬆不過的事情了,具體的做法無非是把哪些標籤組合在一起實現一個控制項而已。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.