網站建設PHP中接口的討論

不少人都問我, 網站建設PHP的接口有什麼用?何時用?什麼地方用?
首先咱們來看什麼是接口?
接口不是類,和類類似。主要用來描述類具體有什麼功能(方法),但並不實現具體的功能,只起定義做用,具體功能由實現接口的類實現(implement),一個類能夠實現一個或多個接口。
通常的動態語言都沒有接口,可是PHP5中有,在PHP中定義接口:
Java代碼   收藏代碼
  1. interface User {  
  2.     public function eat();  
  3.     public function sleep();  
  4. }  

實現接口:
Java代碼   收藏代碼
  1. class Chinese implements User {  
  2.     public function eat() {  
  3.     echo "eat chinese food!";  
  4.     }  
  5.     public function sleep() {  
  6.     echo "sleep..."  
  7.     }  
  8. }  


上面的代碼在PHP編程中到底有什麼意義呢?從實踐的角度出發,PHP中接口的做用幾乎爲0,徹底是雞肋,上面的代碼咱們不定義接口,直接定義一 個Chinese類也能夠正常的工做,徹底沒有任何問題。目前PHP5中的接口,頂多只能用做類型提示,僅此一用而已。固然,類型提示可讓咱們的某些設 計更爲清晰。

咱們來看看怎樣利用接口來完成類型提示(其實意義並不大)。

Java代碼   收藏代碼
  1. public function doSomething($user) {  
  2.     $user->eat();  
  3. }  


假如方法doSomething()須要傳遞一個User對象的實例,有可能使用這個方法的用戶並不清楚$user是User對象的實例,因此有可能將代碼寫成下面這樣:

Java代碼   收藏代碼
  1. $user = "bing.peng";  
  2. $test->doSomething($user);  

那麼當程序試圖執行$user->eat()方法時,就會失敗,由於用戶並無傳入指望對象。咱們來爲doSomething()方法加入類型提示:
Java代碼   收藏代碼
  1. public function doSomething(User $user) {  
  2.     $user->eat();  
  3. }  

這樣用戶就可清晰的知道doSomething()須要的是User對象,從而避免一些低級的錯誤。可是因爲PHP是動態語言,因此你仍是能夠亂寫,以下:
Java代碼   收藏代碼
  1. $user = "bing.peng";  
  2. $test->doSomething($user);  

執行代碼時,你仍是會失敗,類型提示的做用也沒有多大的意義,因此實踐中PHP接口的做用幾乎爲0,咱們無緣無故的還會多出一段接口定義代碼,若是你將接口代碼放到一個單獨的文件中,那麼打開這些文件還須要花費時間,儘管它不多。

順便說下我我的對 網站建設PHP目前發展的一點小小的見解吧,PHP爲了適應企業級開發,增長了不少面向對象的新特性,不少東西都是直接從Java中拿過 來,好比接口,可是動態語言中真的不太須要接口這東西;好比類型提示,其實用處並不大。如今的PHP愈來愈複雜化了,有點不三不四了,逐漸的背離了人民羣 衆,要知道PHP能成爲web開發第一語言,主要緣由就是在於草根、簡單,但願PHP的發展能愈來愈好。(fblww-0313)
相關文章
相關標籤/搜索