咨询电话:
15628812133
18
2018/08

PHP写API接口的时候,什么时候用return,什么时候用echo???

发布时间:2018-08-18 11:49:32
发布者:pengyifeng
浏览量:
0

在日常的PHP项目代码编码的时候,return 和 echo 两个函数,是使用最多的基本函数,没有一个项目是不使用这两个函数的,这两个函数使用的方法是一样的,但是获得的结果稍有不同,今天就来看看这两个函数的使用方法和使用的地方。我们直接从项目中的代码来分析他倆的不同之处,这是一个APP的项目:

前端代码

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

其实这段代码很简单,就是一个ajax的查询代码,向后台发送请求获取后台传送过来的数据,我们主要来看看后台的代码,在使用return和echo的区别在哪。

//***************************
//  获取商品详情接口
//***************************
    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();
    }

这是一个简单后台查询接口并返回数据的正确代码,其中返回代码我们使用的是echo来输出一个json格式的字符串,下面是接口获取到的数据

return和echo的区别.jpg

但是同样的代码,我们仅仅把echo 变成 return的时候呢?获取到的数据就变成了NULL,这是为什么呢,其实很多在刚开始写api接口的程序员,大部分都遇到这个问题,很疑惑不知道为什么使用echo就可以获取数据,而使用return就获取不到呢,其实原因很简单,returan常常使用在服务器内部来获取别的函数返回的值,不用输出在页面上面,return是语言中函数或者方法所代表的值,跟变量一样,储存在内存中。而服务器与客户端交互时,无法读取服务器的内存系统,所以只能通过文本这样的方式来交换信息。 所以要echo一段文本给客户端,更简单的方式来理解就是 return是指返回值不产生输出,而echo不是可以直接输出在页面上。Ajax请求就可以理解为在访问一个页面一样只有输出了才看得见信息,不然是看不到信息的,而return只在服务器内部传输,看不见所以页面上没有返回信息也就是获取不到。
所以在写PHP的API接口时候,记得返回数据使用echo而不要在使用return 了,不然是获取不到数据的 


关键词:
返回列表