不少人都問我,
網站建設PHP的接口有什麼用?何時用?什麼地方用?
首先咱們來看什麼是接口?
接口不是類,和類類似。主要用來描述類具體有什麼功能(方法),但並不實現具體的功能,只起定義做用,具體功能由實現接口的類實現(implement),一個類能夠實現一個或多個接口。
通常的動態語言都沒有接口,可是PHP5中有,在PHP中定義接口:
- interface User {
- public function eat();
- public function sleep();
- }
實現接口:
- class Chinese implements User {
- public function eat() {
- echo "eat chinese food!";
- }
- public function sleep() {
- echo "sleep..."
- }
- }
上面的代碼在PHP編程中到底有什麼意義呢?從實踐的角度出發,PHP中接口的做用幾乎爲0,徹底是雞肋,上面的代碼咱們不定義接口,直接定義一 個Chinese類也能夠正常的工做,徹底沒有任何問題。目前PHP5中的接口,頂多只能用做類型提示,僅此一用而已。固然,類型提示可讓咱們的某些設 計更爲清晰。
咱們來看看怎樣利用接口來完成類型提示(其實意義並不大)。
- public function doSomething($user) {
- $user->eat();
- }
假如方法doSomething()須要傳遞一個User對象的實例,有可能使用這個方法的用戶並不清楚$user是User對象的實例,因此有可能將代碼寫成下面這樣:
- $user = "bing.peng";
- $test->doSomething($user);
那麼當程序試圖執行$user->eat()方法時,就會失敗,由於用戶並無傳入指望對象。咱們來爲doSomething()方法加入類型提示:
- public function doSomething(User $user) {
- $user->eat();
- }
這樣用戶就可清晰的知道doSomething()須要的是User對象,從而避免一些低級的錯誤。可是因爲PHP是動態語言,因此你仍是能夠亂寫,以下:
- $user = "bing.peng";
- $test->doSomething($user);
執行代碼時,你仍是會失敗,類型提示的做用也沒有多大的意義,因此實踐中PHP接口的做用幾乎爲0,咱們無緣無故的還會多出一段接口定義代碼,若是你將接口代碼放到一個單獨的文件中,那麼打開這些文件還須要花費時間,儘管它不多。
順便說下我我的對
網站建設PHP目前發展的一點小小的見解吧,PHP爲了適應企業級開發,增長了不少面向對象的新特性,不少東西都是直接從Java中拿過 來,好比接口,可是動態語言中真的不太須要接口這東西;好比類型提示,其實用處並不大。如今的PHP愈來愈複雜化了,有點不三不四了,逐漸的背離了人民羣 衆,要知道PHP能成爲web開發第一語言,主要緣由就是在於草根、簡單,但願PHP的發展能愈來愈好。(fblww-0313)