PHP寫API輸出的時(shí)用echo的原因詳解
寫php API寫的很少,最近才開(kāi)始接口的寫法,在框架里面一直用return,但是在api中retrun就失效了,為什么呢?
網(wǎng)友給出的答案:
1.return 一般用于函數(shù)或方法的返回。
echo 才是輸出(也就是顯示)
如果你不輸出,api有何作用。
2.return只能在php內(nèi)部使用
對(duì)外,你要給別人解析,你就理解成輸出,用echo
3.當(dāng)然是echo了,如果是json最好加上header標(biāo)識(shí)
<?php $ret = array( 'name' => 'fdipzone' ); header('content-type:application/json;charset=utf8'); echo json_encode($ret);?>
為什么給app寫接口時(shí),要用echo 返回 json數(shù)據(jù)?
1.給 app寫接口時(shí),要用 echo json_encode() 來(lái)返回?cái)?shù)據(jù),但是PHP自身調(diào)用卻用 return json_encode();
rerurn是語(yǔ)言中函數(shù)或者方法所代表的值,跟變量一樣,儲(chǔ)存在內(nèi)存中。return是給其他代碼塊一個(gè)指針或者引用。
而服務(wù)器與app(客戶端)交互時(shí),他們無(wú)法讀取同一個(gè)內(nèi)存系統(tǒng),只能通過(guò)文本這樣的方式來(lái)交換信息。
所以要echo一段文本(json)給客戶端。
php慣用的輸出流方式就是echo,如果你鐘情于return輸出,可以自創(chuàng)一門語(yǔ)言來(lái)實(shí)現(xiàn)。
2.我是這么理解的,不管什么程序,你總要輸出吧,那怎么輸出呢?PHP腳本,也就是用到<?php ?> 標(biāo)記起來(lái)的這些,都要靠PHP來(lái)解析的,那你要輸出肯定要用到echo,die,exit,print_r,
用return是輸出不了的,return就是返回的意思,我(主程序)調(diào)方法,方法給我返回結(jié)果。
3.框架本身會(huì)對(duì)你的函數(shù)返回的字符串進(jìn)行輸出,要輸出最終都是echo。。只是框架基本都是封裝了response對(duì)象;echo是輸出 只有輸出的內(nèi)容http請(qǐng)求的時(shí)候才能獲取到
而php內(nèi)部調(diào)用沒(méi)有http請(qǐng)求
return 作為函數(shù)返回值或結(jié)束語(yǔ)句,是返回的數(shù)據(jù)的指針,也就是數(shù)據(jù)存放的地址,而接口需要返回的是真實(shí)的數(shù)據(jù),
因?yàn)榍昂蠖耸褂玫氖遣煌膬?nèi)存系統(tǒng),所以無(wú)法根據(jù)地址找到相應(yīng)的數(shù)據(jù),而echo print sprinf等這些能夠在瀏覽器中打印數(shù)據(jù)的函數(shù)都是基于http協(xié)議傳輸?shù)恼媸菙?shù)據(jù),所以在前端是可以獲取和判斷的.
需要注意的是,在tp框架中,return關(guān)鍵字的確是可以給返回?cái)?shù)據(jù)的,也就是可以作為接口返回?cái)?shù)據(jù)關(guān)鍵字的,但是用原生的php是不行的,這應(yīng)該是tp框架內(nèi)部做過(guò)處理了!
以上就就是本次關(guān)于PHP寫API輸出的時(shí)用echo的原因的全部?jī)?nèi)容,感謝大家的閱讀和對(duì)腳本之家的支持。
相關(guān)文章
php實(shí)現(xiàn)微信公眾平臺(tái)賬號(hào)自定義菜單類
這篇文章主要介紹了php實(shí)現(xiàn)微信公眾平臺(tái)賬號(hào)自定義菜單類的方法,涉及針對(duì)微信接口API的二次開(kāi)發(fā),是非常實(shí)用的技巧,需要的朋友可以參考下2014-12-12php使用Jpgraph繪制簡(jiǎn)單X-Y坐標(biāo)圖的方法
這篇文章主要介紹了php使用Jpgraph繪制簡(jiǎn)單X-Y坐標(biāo)圖的方法,實(shí)例分析了Jpgraph繪制坐標(biāo)圖及繪制曲線的相關(guān)技巧,需要的朋友可以參考下2015-06-06PHP連接MySQL數(shù)據(jù)庫(kù)的三種方式實(shí)例分析【mysql、mysqli、pdo】
這篇文章主要介紹了PHP連接MySQL數(shù)據(jù)庫(kù)的三種方式,結(jié)合實(shí)例形式分析了PHP基于mysql、mysqli、pdo三種方式連接MySQL數(shù)據(jù)庫(kù)的相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下2019-11-11php獲得客戶端瀏覽器名稱及版本的方法(基于ECShop函數(shù))
這篇文章主要介紹了php獲得客戶端瀏覽器名稱及版本的方法,基于ECShop函數(shù)get_user_browser實(shí)現(xiàn)該功能,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-12-12PHP字符過(guò)濾函數(shù)去除字符串最后一個(gè)逗號(hào)(rtrim)
PHP字符過(guò)濾函數(shù)去除字符串最后一個(gè)逗號(hào),用php自帶的函數(shù)比較容易解決2013-03-03php實(shí)現(xiàn)把url轉(zhuǎn)換迅雷thunder資源下載地址的方法
這篇文章主要介紹了php實(shí)現(xiàn)把url轉(zhuǎn)換迅雷thunder資源下載地址的方法,采用很簡(jiǎn)單的base64_encode編碼即可實(shí)現(xiàn)該功能,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2014-11-11PHP幾個(gè)數(shù)學(xué)計(jì)算的內(nèi)部函數(shù)學(xué)習(xí)整理
下面主要講述 round, floor, ceil, pow, rand,max, min, decbin, bindec, dechex, hexdec, decoct, octdec 函數(shù)。2011-08-08