API輸出的時候是return仍是echo?

寫php API寫的不多,最近纔開始接口的寫法,在框架裏面一直用return,可是在api中retrun就失效了,爲何呢?php

網友給出的答案:前端

1.json

return 通常用於函數或方法的返回。
echo 纔是輸出(也就是顯示)
若是你不輸出,api有何做用。

2.segmentfault

return只能在php內部使用
對外,你要給別人解析,你就理解成輸出,用echo 

3.後端

固然是echo了,若是是json最好加上header標識
<?php
$ret = array(
    'name' => 'fdipzone'
);
header('content-type:application/json;charset=utf8');
echo json_encode($ret);
?>

爲何給app寫接口時,要用echo 返回 json數據?

1.給 app寫接口時,要用 echo json_encode() 來返回數據,可是PHP自身調用卻用 return json_encode();api

rerurn是語言中函數或者方法所表明的值,跟變量同樣,儲存在內存中。return是給其餘代碼塊一個指針或者引用。
而服務器與app(客戶端)交互時,他們沒法讀取同一個內存系統,只能經過文本這樣的方式來交換信息。
因此要echo一段文本(json)給客戶端。
php慣用的輸出流方式就是echo,若是你鍾情於return輸出,能夠自創一門語言來實現。

2.瀏覽器

我是這麼理解的,無論什麼程序,你總要輸出吧,那怎麼輸出呢?PHP腳本,也就是用到<?php ?> 標記起來的這些,都要靠PHP來解析的,那你要輸出確定要用到echo,die,exit,print_r,
用return是輸出不了的,return就是返回的意思,我(主程序)調方法,方法給我返回結果。

3.服務器

框架自己會對你的函數返回的字符串進行輸出,要輸出最終都是echo。。只是框架基本都是封裝了response對象;echo是輸出 只有輸出的內容http請求的時候才能獲取到
而php內部調用沒有http請求

 

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

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

須要注意的是,在tp框架中,return關鍵字的確是能夠給返回數據的,也就是能夠做爲接口返回數據關鍵字的,可是用原生的php是不行的,這應該是tp框架內部作過處理了!

相關文章
相關標籤/搜索