PHP写API输出的时用echo的原因详解


Posted in PHP onApril 28, 2019

写php API写的很少,最近才开始接口的写法,在框架里面一直用return,但是在api中retrun就失效了,为什么呢?

网友给出的答案:

1.return 一般用于函数或方法的返回。

echo 才是输出(也就是显示)

如果你不输出,api有何作用。

2.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();

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 作为函数返回值或结束语句,是返回的数据的指针,也就是数据存放的地址,而接口需要返回的是真实的数据,

因为前后端使用的是不同的内存系统,所以无法根据地址找到相应的数据,而echo print sprinf等这些能够在浏览器中打印数据的函数都是基于http协议传输的真是数据,所以在前端是可以获取和判断的.

需要注意的是,在tp框架中,return关键字的确是可以给返回数据的,也就是可以作为接口返回数据关键字的,但是用原生的php是不行的,这应该是tp框架内部做过处理了!

以上就就是本次关于PHP写API输出的时用echo的原因的全部内容,感谢大家的阅读和对三水点靠木的支持。

PHP 相关文章推荐
php实现的MySQL通用查询程序
Mar 11 PHP
php开发工具之vs2005图解
Jan 12 PHP
php中DOMDocument简单用法示例代码(XML创建、添加、删除、修改)
Dec 19 PHP
php小经验:解析preg_match与preg_match_all 函数
Jun 29 PHP
教你如何解密 “ PHP 神盾解密工具 ”
Jun 20 PHP
跨浏览器PHP下载文件名中的中文乱码问题解决方法
Mar 05 PHP
PHP十六进制颜色随机生成器功能示例
Jul 24 PHP
PHP实现的折半查询算法示例
Oct 09 PHP
php+Ajax处理xml与json格式数据的方法示例
Mar 04 PHP
微信公众平台开发教程③ PHP实现微信公众号支付功能图文详解
Apr 10 PHP
thinkphp5.1框架实现格式化mysql时间戳为日期的方式小结
Oct 10 PHP
Laravel5.1 框架Request请求操作常见用法实例分析
Jan 04 PHP
PHP+mysql防止SQL注入的方法小结
Apr 27 #PHP
PHP常用工具函数小结【移除XSS攻击、UTF8与GBK编码转换等】
Apr 27 #PHP
PHP操作路由器实现方法示例
Apr 27 #PHP
PHP切割汉字的常用方法实例总结
Apr 27 #PHP
YII框架常用技巧总结
Apr 27 #PHP
YII框架行为behaviors用法示例
Apr 26 #PHP
YII框架模块化处理操作示例
Apr 26 #PHP
You might like
献给php初学者(入门学习经验谈)
2010/10/12 PHP
easyui的tabs update正确用法分享
2014/03/21 PHP
php开启openssl的方法
2014/05/15 PHP
从wamp到xampp的升级之路
2015/04/08 PHP
PHP+jQuery+Ajax实现分页效果 jPaginate插件的应用
2015/10/09 PHP
PHP里的$_GET数组介绍
2019/03/22 PHP
js DataSet数据源处理代码
2010/03/29 Javascript
javascript cookies操作集合
2010/04/12 Javascript
jQuery UI插件自定义confirm确认框的方法
2015/03/20 Javascript
JQuery遍历元素的父辈和祖先的方法
2016/09/18 Javascript
深入理解requestAnimationFrame的动画循环
2016/09/20 Javascript
JS实现微信弹出搜索框 多条件查询功能
2016/12/13 Javascript
详解vue.js+UEditor集成 [前后端分离项目]
2017/07/07 Javascript
用js实现每隔一秒刷新时间的实例(含年月日时分秒)
2017/10/25 Javascript
使用vue中的v-for遍历二维数组的方法
2018/03/07 Javascript
layui点击导航栏刷新tab页的示例代码
2018/08/14 Javascript
了解Javascript中函数作为对象的魅力
2019/06/19 Javascript
详解微信小程序之提高应用速度小技巧
2020/01/07 Javascript
详解Howler.js Web音频播放终极解决方案
2020/08/23 Javascript
JS实现百度搜索框
2021/02/25 Javascript
Python实现批量修改文件名实例
2015/07/08 Python
Python的Django应用程序解决AJAX跨域访问问题的方法
2016/05/31 Python
python解析基于xml格式的日志文件
2017/02/25 Python
对PyQt5中的菜单栏和工具栏实例详解
2019/06/20 Python
Python函数参数分类原理详解
2020/05/28 Python
基于CentOS搭建Python Django环境过程解析
2020/08/24 Python
python 代码运行时间获取方式详解
2020/09/18 Python
python爬虫中采集中遇到的问题整理
2020/11/27 Python
美国最古老的精致书写工具制造商:A.T. Cross(高仕)
2018/01/30 全球购物
美国肌肉和力量商店:Muscle & Strength
2019/06/22 全球购物
英国经济型酒店品牌:Travelodge
2019/12/17 全球购物
国际经济贸易专业自荐信
2014/06/13 职场文书
销售人员工作自我评价
2014/09/21 职场文书
创业计划书之农家乐
2019/10/09 职场文书
python异步的ASGI与Fast Api实现
2021/07/16 Python
springboot应用服务启动事件的监听实现
2022/04/06 Java/Android