PHP框架發展存四誤區 死穴不除難成大器
隨著PHP技術的普及,PHP各類應用框架也如雨后春筍般飛快的發展,與之相矛盾的是,一些所謂的高手經常把自己寫的一個"框架"作為一個產品,實際生產行為中往往使用某些CMS或論壇程序作為核心開發真正的應用。
其實框架這概念,最早來源于C/S軟件的應用,比較經典的有:微軟的MFC、Java的Spring、Struts、Hibernate(也就是所謂的SSH)之類的框架,當然MFC純粹是針對C/S類應用的,而后者針對或適用于Web應用,然而不管是那種,應用在Web上,都是有明顯缺點的,但PHP一些框架往往都繼承了這些思想,所以到目前為止,PHP類框架還都是止于模仿,當然也確實充分利用了PHP的一些特性,但真正在應用上,仍然顯得做大項目不足,小項目多余的感覺,這也是PHP框架一般只作為"學者"使用,應用卻并不是那么流行,很多所謂的高手也寧愿自己去寫一個框架的原因。
那么,PHP框架發展到底存在哪些誤區呢?
主要有下面幾個方面:
1、把控制器寫得過于強大,從而偏離了框架的本質
有些框架的控制器簡直可以完全代替rewrite了,但是這樣有意義么?完全就是一個無聊的鬧劇而已,作為框架,最需要做的事情一是要簡便易用,二是提供多一些針對Web真正實用、穩定、必要的庫,(而實際當中,系統類庫和業務類庫往往是不同的)做過多年程序員的人都知道,老手和新手的區別在于,老手通常是有很多即時可用的代碼,而新手往往要自己去找,如果框架不能讓新手、老手都一樣簡便實現某功能,那么要框架來干嗎?所以說,過分去弄控制器這一塊,就偏離了原則,并且可能對開發造成一定的麻煩。
2、思想上仍然按照Java的那種老的一套思路,更適合于開發B/S應用的企業管理軟件,而與Web的思路有點偏離
就拿權限與模塊化思路來說,一般的框架都把app固定死了,而實際應用中,Web的APP通常是有三重的,具體為:administrator后臺管理應用池,member 前臺會員控制中心應用池,public公眾瀏覽信息應用池。
傳統的框架雖然有通過權限系統進行隔離,但卻通常是把administrator、member、public三塊應用都混在一塊,沒有對安全級別進行隔離,不管是思想上,還是對于安全管理,其實都是不利的,就拿傳統的論壇程序來說,通常管理員要登錄后臺,都必須要重新輸入一次密碼,其實這樣做對安全確實是有利的,但從抽像思維來看,這是對管理員的應用進行了分離,姑且把這些應用當作"池"的概念,因此不能用傳統的B/S企業管理軟件的思想去設計。
3、View的模式過于死板,很難用于商業應用
這里說的商業用戶是指要向第三方發布的應用,就拿CakePHP來說,因為視圖固定得太死,如果想設計成真正易于美工修改,又支持多模板模式的,那幾乎是要完全拋棄它原有的view機制,很多東西太過學術化,而與實際應用有點出入,加上模板引擎的思想大家很難真正做到統一,從而使PHP框架全面混亂。(由于每個人的理解有偏差,所以出現這樣的問題也是在所難免的)。
4、框架本身過于龐大,導致實際開發中,很多人對框架進行不同程度的精簡,從而嚴重不統一
就拿官方的ZendFramework來說,其實一些核心文件加載時間就要0.05秒以上,用這種東西,假如要做一些高性能的系統,幾乎是不可能的事情,但是在國外,因為對知識產品權比較尊重,所以未經授權是不會胡亂改人的系統的,因為此應之就出現了不少用于提升PHP運行性能的東西,但這終究不是最了的解決方法的。
終上所述,PHP框架要真正做到通用、實用,還需要很長時間,也許真正成熟之后,我們會后臺編譯在PHP擴展里的真正高性能PHP框架,(也就是說還是想把它做成組件的形式來使用)。
但給初學者的建議,并不是說不主張學習或使用框架,相反,要多些去研它的思想內涵,此外大多數框架程序都充分利用PHP的一些特性,通過學習框架能發現不少東西,但是真正優秀的程序員,最終需要的還是自己的靈魂,多些去想為什么?如何才能更方便,如何才能讓自己的"代碼庫"適應性更強,當想通了這一點,其實一切東西都變得不再那么重要了。
【編輯推薦】