php接口返回數據 用echo 還是return?

框架用多了,也是有壞處的,之前一直用框架寫接口,返回數據時都是用的return 關鍵字,時間長了,就會感覺這樣是理所當然,因為函數的返回值 就是用return 關鍵字返回.其實這樣是不對的.

今天用原生的寫了一個簡單的登錄驗證頁面,問題就來了,一直用的return關鍵字,死活都沒有返回值,為此我還特意翻看了一下以前項目的代碼,確實是用return關鍵字寫的,是沒問題的,因為那個項目已經上線了,至今一直都在使用,並且還在更新迭代中.

php接口返回數據 用echo 還是return?

php接口返回數據 用echo 還是return?

上面就是前段的js代碼和後端的php代碼,這段看似很簡單代碼,確存在著一個大的問題,那就是數據返回時,用的是return關鍵字,經過多次測試,上述php代碼是沒有返回給前端值的,也就是每次的結果都是驗證失敗.

剛開始一直在找問題,因為這種寫法,已經被驗證過很多次是沒有問題的,所以就一直沒考慮這方面,但是代碼幾句,於是索性就讓php直接返回了一句 return 1,但是結果仍然是驗證失敗,

php接口返回數據 用echo 還是return?

走到這裡,才開始懷疑是return 關鍵詞,沒有給前臺返回數據造成的問題,於是試著用 echo 關鍵字輸出數據,奇蹟出現了,前端出現了驗證成功,

php接口返回數據 用echo 還是return?

問題雖然解決了,但是還是沒有搞懂其中的原理,於是開始翻閱資料,最終還是找到了一個個人感覺比較滿意的答案:

return 作為函數返回值或結束語句,是返回的數據的指針,也就是數據存放的地址,而接口需要返回的是真實的數據,

因為前後端使用的是不同的內存系統,所以無法根據地址找到相應的數據,而echo print sprinf等這些能夠在瀏覽器中打印數據的函數都是基於http協議傳輸的真是數據,所以在前端是可以獲取和判斷的.

需要注意的是,在tp框架中,return關鍵字的確是可以給返回數據的,也就是可以作為接口返回數據關鍵字的,但是用原生的php是不行的,這應該是tp框架內部做過處理了吧!這裡就不在深究了,有興趣的朋友,可以去看下tp的源碼!!


分享到:


相關文章: