我一直都在尋找優秀php的框架

2021-06-20 05:00:26 字數 2441 閱讀 8671

目前,有人使用的php框架有400多。很多開發了發布的php框架可以說是近乎上千個之多。在選擇php開發框架時,很多人都會陷入迷茫,或因此走很多彎路。

因此,我們這裡簡單講一下,如何尋找乙個不會讓你後悔的php開發框架。

首先要明確,先擇框架,絕不是為了學習,也不是為了做乙個企業**或小型個人**。面臨選擇問題的根本點在於,你這個**是大型**,或將來會成為大型**。你不能因為框架而阻礙你的發展。

那麼,我們先講一下,目前選擇框架的種種誤區:

1、選擇流行的。並非流行的就是非常好的。舉例來說,ci相當流行。但ci只能用於小型**開發,並且,可擴充套件性相當差,它的最大的優點是初學者易上手。但不能很好地運用php5物件導向的特性。

2、選擇官方的。無非就是用zend,但它並不是最具擴充套件性的**,或者,它的一切也只有在zend server中才能充分體現。可zend server是要收費的。另一壞處,那就是,它的更新速度並不是很快。乙個很複雜的**,相對於乙個**的發展,無法等待官方的更新,需要時,你需要自己去修改的。所以,以官方更新有保障,這是靠不住的理論。

3、選擇簡單的。目前國產的,聲稱極簡單的框架也不下於上百種。但這些簡單的框架,實際最終會浪費你很多的時間。為什麼呢?比如,無日誌,出錯後,不知錯在何處。無trace,跟蹤除錯不方便。

那麼,我們選擇框架有什麼樣的標準暱?

1、完全物件導向。這可不是說著玩玩的。我們要明確,物件導向的目的是什麼?物件導向根本目的是在於:

可以擴充套件,松耦合。

如何可以擴充套件?相當簡單,你不用多看**,只要用搜尋工具統計一下以下的字串:

final 這表示是最終類,或最終方法,是對繼承的保護。比如,單件模式中,肯定有 fincal function __clone,以保護其永遠都是單件的。

abstract 抽象類,抽象類中就有抽象函式。這表明開發人能夠面向抽象程式設計,用抽象函式,給你留下了可擴充套件的介面。

inte***ce 當乙個抽象類中完全是由抽象函式組成,並且,這些抽象函式均是必須實現的,那就會定義 inte***ce。如果沒有,那你就沒有可擴充套件的可能。

private protected 這是訪問控制。如果有這些,則表明,**封裝有相當可靠的安全性。不會讓使用者訪問不可訪問的方法或屬性。

2、**質量。

除了按一般程式設計規範以外,**應當是軟編碼。所謂軟編碼,即是指動態擴充套件是相當方便的。對於此,最簡單的方法,是搜尋一下case. 因為, switch case 結構是硬編碼。如果你增擴一項,你必須到switch中增加乙個case.破壞了原有核心**的封裝。

函式長度。乙個函式最長不允許超過140行。否則,可維護性極差。比如,zend date中有一函式即是有大量switch case,並且,乙個函式超過了1000行。這樣的**,誰看了都暈。

3、必須的功能。

用框架,就是使用的框架提供的現成的功能,如果一些基本功能都沒有實現,那不如不用。而這些必須的功能,基本有以下一些;

autoload 自動載入,有它,會讓你的**寫得更少。因為,省下了很多的 include, require

cache 必須是多種cache支援的,以適用於你當前所用的主機空間或伺服器

config配置檔案讀取與管理,這是必不可少的,有配置,會省下大量**。

mvc,即模型,檢視與控制器。其中控制器的實現最為重要,效率,易用性,可擴充套件性。假如使用get_broswer函式獲取ua的,最好不用。因為get_broswer函式實在是效率太差。

errorhandle exceptionhandle 錯誤與異常管理,沒有這個,程式出錯不會受到管理,你無法了解,**因為什麼樣的原因錯了。

logger日誌,錯誤要寫日誌,效能監控也要寫日誌,我們不要求**中有多少效能監控,但出錯至少要有詳細的日誌寫出來。同時,日誌因當有多少輸出,檔案,郵件,控制台,頁面,這樣的話,當你**成為大型**時,新增乙個日誌簡訊輸出,就很方便。並且,日誌要有過濾,哪些日誌如何輸出,有這樣好的定義,使用就相當方便。

validator filter 驗證與過濾,使用者輸入,必須要驗證,否則,sql 注入,**安全不可保證。過濾器,這是必須的,總不能把使用者錄入的髒字再顯示到頁面上吧。

session 這是必須的,多種session支援也是必須的。 因為, 多台伺服器共享session,那就不再是phpsession

資料庫,大**肯定是必須的,是否能支援多庫,是否有分庫管理與對應的演算法訪問機制。

非必須的常用類庫,如圖象處理,郵件,當然,這些是有優秀的第三方的。所以,不是必須。但如果有,則只能說明,框架開發者開發得相當使用者。並且,他提供的肯定有獨特之處。

最後則是,有沒有模板引擎,或者有沒有部件支援,因為,view中有了這些,會大大加快開發速度,並且,這也是mvc基本的必須元件。

到這裡,大家不妨看一下,所謂20kb的框架,是否有用?是否能用?

當然,這些**會有多大?實際也不是越大越好,zend的50mb肯定有問題。但如果不足5m,那肯定一樣也有問題。太簡陋的**,不是需求考慮不全,就是**不夠強壯。

我很慶幸我一接觸php就使用phalcon框架 。它真的非常優秀

安全感就是 ,你需要的那個人一直都在

安全感就是 你需要的那個人一直都在 喜劇 乙個人欣賞 沒有人在身旁 也笑得很誇張 下雨 我沒有哭泣 也快要忘記 有關的回憶 我看見那些愛漸漸走遠,那畫面褪色變很淺。誰都有美好的往事,那也是不堪的回憶 我還是會相信愛情,只是不會再相信愛情能永遠 時間的稀釋,今夜的雨是不是可以洗去以往的沉痛。既然花沒有...

一直困擾我的問題

當解決乙個問題的時候,隨即引出幾個未知的問題。然後在解決那幾個問題時又引出更多的問題。導致問題就像一棵樹一樣,不斷往上生長。逐漸遠離最開始的問題。當然也在一層一層未解決的問題的影響下挫敗感越來越強烈。最後不得不停止 放棄。發現解決方法一 當在解決乙個不知道難度有多大的問題時,找一張紙,把最根本的要解...

原來,你的學習方法一直都是錯的

高效學習的定義 找到最適合自己的學習手法,在相對短的時間內集中注意力,以解決乙個工作生活當中的難題為目的著手學習,你需要勤加練習,有時候還需要向名師求助。許岑 你肯定像我之前一樣,經常學習一門語言 英語 或者一門樂器 吉他 學了很久都沒有什麼效果。我一直感覺學習方法可能有問題,但是並不知道問題出在了...