的
用PHP生成HTML文檔, 支持標簽嵌套縮進, 支持標簽自定義屬性
起因
這個東西確實也是心血來潮寫的, 本來打算是輸出HTML片段用的, 但后來就干脆寫成了一個可以輸出完整HTML的功能;
我很滿意里邊的實現縮進的機制, 大家有用到的可以看看
p.s. 現在都是真正的前后端分離了(vue, nodejs, webpack...), 這個東西喜歡就用, 不喜歡就算了~
支持的標簽
html, head, meta, title, body, input, select/option, form, table, div, 注釋, 以及 自定義標簽(成對出現的標簽), 還有一大堆屬性(在下邊有介紹)
實現
整體
1.每個標簽都對應一個類, 比如 標簽<html>, 對應了一個叫html的類
2.標簽中有用到的屬性, 我都放到了一個類中了, 并提供了方法去獲取賦了值的屬性
嵌套縮進
每個標簽我都設計了一個類, 比如 table 標簽, 就有一個叫table的類與之對應
每個類里邊一般都有以下3個重要成員:
1.本標簽的縮進值
2.輸出本標簽最終字符串的方法, out()
3.給本標簽添加子標簽的方發, append()
其中append()接收的是子標簽的對象, 在最終調用$html->out()的時候, 每個子標簽對象里的out()方法會被依次調用, 縮進值也會從上層類傳遞到最下層類并累加;
另外, 每個類都包含了屬性類(calss attribute ), 每個類的縮進值是從屬性類里繼承而來的, 所以如果修改了屬性類里的縮進量, 所有類的縮進量就跟著改變了
你也可以給標簽類添加一個自己的縮進值來覆蓋統一的縮進值
屬性
我這里的方案是定義一個類(calss attribute ), 里邊有
1.標簽可能擁有的屬性
2.對應的setXxx方法
3.組裝非空的屬性拼成字符串的方法
4.為了不影響下次顯示, 會有專門的清空方法, 把之前賦值的屬性都清空
這樣的話, 在定義標簽屬性的時候, 需要的就賦上值, 不需要的不賦值就不會在最終的HTML代碼中顯示出來
源碼地址: 傳到碼云了,看其中的test.php文件,是介紹他的用法。
以上就是用php生成HTML文件的類的詳細內容,更多請關注其它相關文章!
更多技巧請《轉發 + 關注》哦!
天我來談談我對傳統HTML與VUE的區別理解(不談太深的區別,查了一下網上那些說的都一樣,我只談很多人最關心的不一樣的,說不對請理解,對不太了解或想了解VUE的人)。
1、 什么是vue
官網介紹:vue是一套構建用戶界面的漸進式框架。它與其他重量級框架不同的是,vue采用自下而上增量開發的設計。Vue的核心庫只關注視圖層,非常容易學習,非常容易與其他庫或已有項目整合。
Vue的目標是通過盡可能簡單的API實現響應的數據綁定和組合的視圖層組件。
2、什么是HTML(HTML5)
HTML5是Web中核心語言HTML的規范,用戶使用任何手段進行網頁瀏覽時看到的內容原本都是HTML格式的,在瀏覽器中通過一些技術處理將其轉換成為了可識別的信息。
總結:它們相同的地方就一句話:用途和結果都是一樣的,不管是VUE還是HTML,最終都是將數據使用各種UI及方式展現給用戶,也就是都是視圖層頁面的。
有人會說使用HTML和VUE開發有什么區別呢?許多人覺得結果都是視圖層表達,而且VUE打包發布后不還是HTML+一堆JS文件,而且還要引入導入編譯感覺特麻煩,感覺VUE好難,為什么要學VUE?
1、開發和部署
VUE 開發過程確實挺麻煩的,要安裝依賴,要npm一堆包(還經常失敗)。而HTML就簡單多了,直接就拿來主意,下載下來,改改就用。
部署的話都差不多,都是在任何服務上都可以直接使用,而且都沒有什么依賴。
但是我覺得VUE的開發類似于開發一個APP,所以他的打包結果是比純HTML+JS更安全的,相當于做過混淆,因而他發布后的體積更小。
2、數據通訊
HTML+JS 數據POST,GET 等基本訪問方式,但是如果直接在HTML中使用數據判斷,或數據循環輸出必須借助js,jquery等通過前端處理然后對id進行賦值操作,所以一般只能借助動態語言如php,java,.net等語言環境進行轉化,但這樣使得web對動態語言環境依賴性過強,造成后端遷移時太過于復雜,而且這樣的Web一般要求前端和后端部署在一起。
VUE則不依賴于動態語言輸出環境,只要是雙方約定了數據傳輸接口,服務器放在哪里,不管使用什么后臺語言都沒關系,因而他的靈活性更強。
3、安全性
有些產品有些公司對語言是有選擇的,主要是不想讓代碼暴露太多,而HTML+JS的方式往往是達不到要求的,因而現在許多企業還是在使用桌面軟件的形式,又或者是要你使用對方的云服務,而私有云部署則要貴的很多,而且比較貴的軟件還要安裝秘鑰軟件,加密狗等方式,無非就是防止你將軟件轉移或無限使用或獲取他的核心算法(雖然js也是有混淆方法的,但很少有人會這么做,我也沒試過但是很影響效率)。
以前我在一個公司就是加班寫了一個WEB程序里邊有一個算法是分析公司產品結構的(那時VUE還不盛行),正好呢又遇到一個懂點的老板(居然會用F12),結果看到核心代碼了,當時就否定了,改用了WinForm 重寫,那個辛苦你懂的。
VUE的打包的話,其實就是根據在頁面中所使用到的組件然后根據你的邏輯關系等進行混淆打包,然后在用戶加載時按需進行加載解析,從某種意義上來說做WEB是一種保護。我覺得這與桌面程序及APP打包效果是一樣的(軟件和APP也是可以反編譯嘛,反編譯后的結果就是混淆),當然不說加密混淆了。
現在國內出現了像DCloud、APICloud(雖然這二家經常打架,畢竟相似度很高,我不做評論,但不可否認對一個只會寫HTML+JS的人轉寫APP是一個不錯的選擇)這些由HTML5開始的跨平臺軟件也開始支持VUE了。
最后附上VUE打包后的調試預覽圖,純HTML的就不多說了,自己F12吧。
51CTO.com快譯】在本文中,我們將逐一介紹目前人氣較高的三種編程語言:PHP、Ruby和Python。
我們將分析它們是如何工作的,它們彼此有何不同,誰在使用它們,以及每種語言受歡迎的程度。
一、 PHP:互聯網上最受歡迎的腳本語言
PHP(超文本預處理器語言)是由Rasmus Lerdorf設計的一種基于服務器端腳本解釋語言,因為開發效率高、靈活、學習成本低,所以常被用于創建動態的交互式網站,當然除了網站以為,還可以用它來實現APP的API接口開發,一些簡單的服務程序開發,尤其是當SWOOLE誕生之后,很多PHP開發者就用這個來開發服務程序。
WordPress是用PHP開發的一個非常流行的博客平臺,我們可以使用它來快速實現我們的網站,同時還可以使用它來實現一些基于CMS的網站系統,當然如果你對PHP和WordPress感興趣,可以參考課程(http://rockingcode.com/);你只需要認真的學習9個小時后,就能學會如何從零開始將一個網站,設計成一個響應式扁平式的WordPress網站。
據維基百科聲稱,截至2013年1月,PHP已安裝在超過2.4億個網站(其中39%抽樣)和210萬臺網站服務器上。
(1)PHP的優點
采用PHP許可證發布的免費軟件
容易上手(學習曲線短而平)
由廣大用戶和開發人員組成的龐大社區
提供了廣泛的數據庫支持
提供大量的可用擴展和源代碼
允許在受限制環境下執行代碼
提供原生會話管理和擴展API
對微軟的ASP(動態服務器頁面)等與之競爭的語言而言,是個不錯的替代選擇
可以部署到大多數網站服務器上
適用于幾乎每一種操作系統和平臺
(2)PHP的缺點
不適合開發桌面應用程序
錯誤處理機制歷來很差勁
全局配置參數會改變語言語義,給部署和可移植性帶來了復雜性
對象在默認情況下值調用(CallByValue),這與大多數語言恰好相反,這讓許多程序員猝不及防
通常被認為不如其他編程語言來得安全可靠
(3)誰在使用PHP?
Zend
雅虎
谷歌
美國宇航局
萬維網聯盟(W3C)
(4)受歡迎程度
據維基百科聲稱,截至2013年1月,PHP已安裝在超過2.4億個網站(其中39%抽樣)和210萬臺網站服務器上。
(5)語法
PHP腳本由< ?php開始,以?>結束。PHP文件的默認文件擴展名是“.php”。PHP文件通常含有HTML標記和一些PHP腳本代碼。
<?php// PHP code goes here?>
二、Python:通用編程語言
Python是一種廣泛使用的高級語言(但它也用于一系列廣泛的非腳本語言),以便程序員用行數較少的代碼就能表達概念。它是在上世紀80年代末提出來的,由Guido van Rossum開發。
就跟所有腳本語言一樣,Python代碼酷似偽代碼。這種編程語言具有優雅的設計和語法規則,這讓它即便在擁有多個程序員的開發團隊中也具有相當強的可讀性。它支持構建計算機程序的結構和元素的多種方法,包括面向對象編程和函數式編程。
(1)Python的優點
簡單易學
可在多個系統和平臺上運行
易讀、條理化的語法
提供了快速原型和動態語義功能
出色的社區支持
通過測試和導入關鍵函數,易于構建應用程序
通過認真實施程序包和模塊,獲得可重用性
面向對象編程驅動型
(2)Python的缺點
它在處理多處理器/多核心工作方面其實不是很好
相比Java等其他語言,Python開發人員群體比較小
缺少商業支持機構,即便對開源項目而言也是如此(不過這種情況在變化)
數據庫訪問層方面有限制
眾所周知,運行速度不如Java等語言
(3)誰在使用Python?
雅虎地圖
Zope公司
Linux Weekly News
Shopzilla
Ultraseek
(4)受歡迎程度
據維基百科聲稱,自2008年以來,Python屢屢躋身于TIOBE編程社區指數評選的八大最受歡迎的編程語言。它是語法并非主要基于C的受歡迎程度排在第三位的語言。
(5)語法
調用解釋器而不將腳本文件作為參數來傳遞可調出下列提示符:
$ pythonPython2.4.3(#1,Nov112010,13:34:43)[GCC4.1.220080704(RedHat4.1.2-48)]on linux2Type<"help<",<"copyright<",<"credits<"or<"license<"formore information.<><><>
將同一文本輸入到Python提示符的右邊,按回車鍵,會輸出文本:
<><><>print <"Put some text here!<";
(6)崗位需求
據Jobs Tractor網站在過去12個月分析在推特上廣告的45000多個開發崗位的情況來看,結果如下:
PHP – 8238
Ruby – 2937
Python – 1587
雖然PHP在這個網站上仍擁有最大的統計數字,切忌別將這種統計數字作為學習或使用一種編程語言的參考依據。
三、Ruby:解釋型的、純粹的面向對象編程語言
Ruby(編程語言)經常與Ruby on Rails(或簡稱rails)在一起,后者是一種開源全棧Web應用程序框架。它是一種動態、命令式的面向對象編程語言,由日本的松本行弘(Yukihiro Matsumoto)開發。這種語言受到了Perl、Eiffel和Smalltalk的影響。它有動態類型系統和自動內存管理功能。
(1)Ruby的優點
和PHP一樣是開源的
適用于多個平臺
可以嵌入到超文本標記語言(HTML)中
一種甚高級語言(VHLL)
提供了將數據方法封裝在對象里面的功能
純粹的OOP(面向對象編程)
超豐富的字符串和文本處理技術/方法
很容易連接DB2、MySQL、Oracle和Sybase等數據庫
用Ruby編寫的可擴展程序很容易維護
擁有一套整潔、簡易的語法,讓新開發人員很容易上手
能夠用一套簡單的API編寫多線程的應用程序
提供了高級的數組類
能夠用Ruby或C編寫外部擴展庫
允許“保留字”用作標識符,只要解析器并不覺得有歧義,但是不太建議這樣做。
更好的安全功能
它有調試器
它有靈活的語法
功能強大的字符串處理機制
(2)Ruby的缺點
很難學會
缺少信息資源
相比其他編程語言,處理時間(CPU時間)比較長
開發和更新比較慢
(3)誰在使用Ruby?
Google Sketchup
37signals
GitHub
Shopify
Indiegogo
Basecamp
(4)受歡迎程度
據Ruby官方網站聲稱,Ruby躋身于全球十大最受歡迎的編程語言排行榜(比如TIOBE指數)。其迅猛發展主要歸功于用Ruby編寫的軟件大行其道,尤其是Ruby on Rails Web框架。
(5)語法
所有Ruby文件都會有擴展名“.rb”。使用/usr/bin目錄下的Ruby解釋器,你就可以運行Ruby代碼。
#!/usr/bin/ruby -wputs"Put something here";
學習一種新的編程語言很費時間,也很乏味。.Net開發人員會跳出來說“我為啥要學?我是專業的.Net開發人員,平日的工作讓我沒時間來學習一種新的編程語言。”
但實則不然。你可以從新的編程語言當中學到許多知識,如果它們對其他經過優化的語言加以完善,更是如此。Ruby就是這樣一種語言。我同樣認為,由某種編程語言方面的開發新手變成專業人員確實不易,但你會感謝這番經歷。現在我只想告訴大家:如果你堅持使用Ruby,那么不會吃虧。樂觀些!
(6)Ruby是什么?
如上所述,Ruby是一種完善的語言,它結合了眾多編程語言的思想和方法。Ruby出色地融合了Python易于理解的流程、Smalltalk的優雅性和Perl簡單易學的語法風格,同時也是一種高級的面向對象編程語言(如今的大多數編程語言都是如此),它是在上世紀90年代中期出現在日本的,現在Ruby已逐漸開始在歐美也更流行起來。
Ruby以動態類型系統和自動內存管理著稱。我說的動態類型是指,Ruby程序中的大多數類型檢查是在運行時執行的,這意味著你沒必要為整數和字符串類型而操心。Ruby會為你做這項工作。我們會在后面的一個簡短例子中深入探討這個話題。
推出Ruby的基本目的是讓人們很容易了解代碼與機器交互。Ruby之父松本行弘堅持認為,設計Ruby的初衷是提高程序員的工作效率,而不是優化機器。
(7)Rails是什么?
Rails是用Ruby編寫的一種極其高效的應用程序框架,由David Heinemeier Hansson開發。據說,相比用基于Java的應用程序框架來開發,用Rails開發的Web應用程序其速度要快十倍。Rails是基于Ruby的開源框架,它可用于快速的數據庫集成。
Rails以打破常規的概念著稱,因此避免了約定,采用了一種動態編程結構。應用程序的基本代碼和更新后的數據庫始終含有Rails從頭到尾執行程序所需要的一切。
一個基本的Ruby程序
看看輸入這段代碼會有怎樣的結果:
代碼:
personal=“I don’t love my girlfriend” puts personal
輸出:
I don’t love my girlfriend
這實際上會將結果打印輸出到控制臺。沒有初始化、分號和主要方法。
現在,不妨看一下我們要翻轉字符串時PHP與Ruby在編程方面的簡單區別:
PHP:
strrev(“string”); Ruby: “string”.reverse
哇!你的字符串馬上就會翻轉。看一下用這兩種編程語言來實現的難易程度。基于Ruby的編程語言讓你很容易編寫程序。它更像用英語來編寫,而不是用編碼語言來編寫。它是編程語言的未來。
(8)Ruby(和Rails)的優點
我知道Ruby這個世界很大,我連皮毛都未觸及,一篇小小博文根本不足以探究Ruby的世界。因此,我們不妨直接介紹Ruby的優點:
優雅――正如我在前面指出,這個優點正是Ruby的強項。作為一種編程語言,Ruby超優雅,幾乎就像英語。正是由于類似英語的這個優點,新手也很容易上手Ruby,不必害怕。
簡潔而強大――上面的例子本身就解釋了Ruby代碼有多簡潔。代碼盡可能簡短。另外,Ruby與其他任何語言一樣強大,因為它是面向對象的高級編程語言,就像其他新潮的編程語言那樣。
從不重新發明輪子――Rails(Ruby)是一種編程接口,它根本不會讓你重新發明輪子。它生成的代碼可反復地重復使用。
內置測試――Rails以用具(harness)和示例數據(fixture)著稱,它們充當支持代碼,因而讓程序員更容易編寫測試用例。另外,Rails創建簡單的測試樁模塊(test stub),這些樁模塊可以由程序員來擴展。
開發、測試和生產環境――Rails巧妙地在三個不同的環境(即開發環境、測試環境和生產環境)下啟動你的項目。這三個環境用起來彼此略有不同,各自補充原始的軟件開發生命周期。
(9)展示時間
現在,不妨看一下幾個使用Ruby來實現的總體比較優秀的網站(其實是知名網站)。你會看到設計人員如何借助Ruby在眾多網站中脫穎而出。
A List Apart
Basecamp
CrunchBase
Github
四、那么,哪種是我該使用和學習的最佳編程語言?
你從大多數程序員會聽到的答案是“你用它們都可以處理各項任務。”它們都是不錯的選擇。沒有好壞之分。這總是取決于你想完成什么樣的任務。
如果你邁出一步學習一種編程語言,那么很可能會使用內置框架來用于你的項目。基本上來說,Web框架讓你更容易開發應用程序。大多數網站都有一系列共同的功能(比如處理會話和數據驗證),框架可以防止你每當創建網站時重寫這部分內容。
如果你已經有了深入了解,PHP有幾種CMS框架可供使用。最流行的PHP內容管理系統(CMS)是WordPress、Joomla和Drupal,大多數有豐富的插件。你可以輕松編寫新的CMS,只需要耐心地看完幾天的教程。
還有其他相當好的框架,但是使用流行框架提高了迅速找到支持或找到所需插件的可能性。就Python而言,有Django和CherryPy這兩種Web框架,它們為你提供了相當不錯的工具包。
如果你選擇了Ruby,你認為你受到的限制性會大一點(因為這種語言比較新),但其基本框架是Rails。你還需要考慮哪種語言提供最出色的支持,那樣萬一你在代碼方面遇到了問題,可以迅速找到答案。
PHP是用于編寫HTML頁面的最佳語言。
Python是一種通用編程語言。它可以用于構建從Web應用程序、爬蟲程序、守護進程到桌面GUI應用程序的幾乎一切程序。
Ruby最擅長快速構建數據實體的Web應用程序,那樣你可以專注于特別功能,而不是插入、更新和刪除這些查詢操作。
就是這樣。但愿你已大致了解了要學哪種編程語言。
原文標題:The Three Programming Languages in a Nutshell
文章審核人:回憶的翅膀
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】
*請認真填寫需求信息,我們會在24小時內與您取得聯系。