久久无码中文字幕_日韩精品无码一本二本三_久久精品呦女暗网_欧美一级夜夜爽_久久精品国产99久久99久久久

18
2018/08

PHP寫API接口的時候,什么時候用return,什么時候用echo???

發(fā)布時間:2018-08-18 11:49:32
發(fā)布者:pengyifeng
瀏覽量:
0

在日常的PHP項目代碼編碼的時候,return 和 echo 兩個函數(shù),是使用最多的基本函數(shù),沒有一個項目是不使用這兩個函數(shù)的,這兩個函數(shù)使用的方法是一樣的,但是獲得的結(jié)果稍有不同,今天就來看看這兩個函數(shù)的使用方法和使用的地方。我們直接從項目中的代碼來分析他倆的不同之處,這是一個APP的項目:

前端代碼

    api.ajax({    
        url: '接口url地址',
        method: 'post',
        data: {
        }
        }, function(ret,err) {
             console.log(JSON.stringify(ret));
         if(err){
             console.log(JSON.stringify(err));
         }
    });

其實這段代碼很簡單,就是一個ajax的查詢代碼,向后臺發(fā)送請求獲取后臺傳送過來的數(shù)據(jù),我們主要來看看后臺的代碼,在使用return和echo的區(qū)別在哪。

//***************************
//  獲取商品詳情接口
//***************************
    public function details(){
        header('Content-type:text/html; Charset=utf8');
        $pro_id = intval($_REQUEST['pro_id']);
        $pro = M('product')->where('id='.intval($pro_id).' AND del=0 AND is_down=0')->find();
        if(!$pro){
        echo json_encode(array('status'=>0,'err'=>'商品不存在或已下架!'));
        exit();
        }
        //$content = preg_replace("/width:.+?[\d]+px;/",'',$pro['content']);
        $content = htmlspecialchars_decode($pro['content']);
        echo json_encode(array('status'=>1,'content'=>$content));
        exit();
    }

這是一個簡單后臺查詢接口并返回數(shù)據(jù)的正確代碼,其中返回代碼我們使用的是echo來輸出一個json格式的字符串,下面是接口獲取到的數(shù)據(jù)

return和echo的區(qū)別.jpg

但是同樣的代碼,我們僅僅把echo 變成 return的時候呢?獲取到的數(shù)據(jù)就變成了NULL,這是為什么呢,其實很多在剛開始寫api接口的程序員,大部分都遇到這個問題,很疑惑不知道為什么使用echo就可以獲取數(shù)據(jù),而使用return就獲取不到呢,其實原因很簡單,returan常常使用在服務(wù)器內(nèi)部來獲取別的函數(shù)返回的值,不用輸出在頁面上面,return是語言中函數(shù)或者方法所代表的值,跟變量一樣,儲存在內(nèi)存中。而服務(wù)器與客戶端交互時,無法讀取服務(wù)器的內(nèi)存系統(tǒng),所以只能通過文本這樣的方式來交換信息。 所以要echo一段文本給客戶端,更簡單的方式來理解就是 return是指返回值不產(chǎn)生輸出,而echo不是可以直接輸出在頁面上。Ajax請求就可以理解為在訪問一個頁面一樣只有輸出了才看得見信息,不然是看不到信息的,而return只在服務(wù)器內(nèi)部傳輸,看不見所以頁面上沒有返回信息也就是獲取不到。
所以在寫PHP的API接口時候,記得返回數(shù)據(jù)使用echo而不要在使用return 了,不然是獲取不到數(shù)據(jù)的 


關(guān)鍵詞:
返回列表