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 相关文章推荐
留言板翻页的实现详解
Oct 09 PHP
PHP Socket 编程
Apr 09 PHP
php Smarty初体验二 获取配置信息
Aug 08 PHP
PHP中使用mktime获取时间戳的一个黑色幽默分析
May 31 PHP
如何使用“PHP” 彩蛋进行敏感信息获取
Aug 07 PHP
php漏洞之跨网站请求伪造与防止伪造方法
Aug 15 PHP
PHP正则替换函数preg_replace和preg_replace_callback使用总结
Sep 22 PHP
php中ob函数缓冲机制深入理解
Aug 03 PHP
PHP简单判断iPhone、iPad、Android及PC设备的方法
Oct 11 PHP
PHP获取文件扩展名的方法实例总结
Jun 10 PHP
thinkphp5.1框架容器与依赖注入实例分析
Jul 23 PHP
PHP Swoole异步MySQL客户端实现方法示例
Oct 24 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
使用网络地址转换实现多服务器负载均衡
2006/10/09 PHP
php实现信用卡校验位算法THE LUHN MOD-10示例
2014/05/07 PHP
php实现比较两个文件夹异同的方法
2015/06/18 PHP
PHP之预定义接口详解
2015/07/29 PHP
比Jquery的document.ready更快的方法
2010/04/28 Javascript
js保存当前路径(cookies记录)
2010/12/14 Javascript
JavaScript去掉空格的方法集合
2010/12/28 Javascript
a标签click和href执行顺序探讨
2014/06/23 Javascript
document.forms用法示例介绍
2014/06/26 Javascript
javascript实现瀑布流自适应遇到的问题及解决方案
2015/01/28 Javascript
JavaScript基本的输出和嵌入式写法教程
2015/10/20 Javascript
jQuery获取cookie值及删除cookie用法实例
2016/04/15 Javascript
jquery实现自适应banner焦点图
2017/02/16 Javascript
JS触摸与手势事件详解
2017/05/09 Javascript
使用jquery DataTable和ajax向页面显示数据列表的方法
2018/08/09 jQuery
CSS3 动画卡顿性能优化的完美解决方案
2018/09/20 Javascript
react同构实践之实现自己的同构模板
2019/03/13 Javascript
JavaScript提升机制Hoisting详解
2019/10/23 Javascript
python小技巧之批量抓取美女图片
2014/06/06 Python
python通过装饰器检查函数参数数据类型的方法
2015/03/13 Python
python3音乐播放器简单实现代码
2020/04/20 Python
Python自动化测试ConfigParser模块读写配置文件
2016/08/15 Python
Python决策树和随机森林算法实例详解
2018/01/30 Python
python实现log日志的示例代码
2018/04/28 Python
替换python字典中的key值方法
2018/07/06 Python
Python弹出输入框并获取输入值的实例
2019/06/18 Python
Python基础类继承重写实现原理解析
2020/04/03 Python
python 常用日期处理-- datetime 模块的使用
2020/09/02 Python
6种非常炫酷的CSS3按钮边框动画特效
2016/03/16 HTML / CSS
Keds加拿大官网:购买帆布运动鞋和皮鞋
2019/09/26 全球购物
加拿大拼图大师:Puzzle Master
2020/12/28 全球购物
大专生简历的自我评价
2013/11/26 职场文书
区域销售经理职责
2013/12/22 职场文书
学校政风行风评议心得体会
2014/10/21 职场文书
关于空气污染危害的感想
2015/08/11 职场文书
详解MySQL 联合查询优化机制
2021/05/10 MySQL