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世纪万年历
Dec 06 PHP
PHP+AJAX实现无刷新注册(带用户名实时检测)
Jan 02 PHP
Linux下ZendOptimizer的安装与配置方法
Apr 12 PHP
在smarty模板中使用PHP函数的方法
Apr 23 PHP
如何使用php绘制在图片上的正余弦曲线
Jun 08 PHP
如何使用php判断所处服务器操作系统的类型
Jun 20 PHP
PHP扩展开发入门教程
Feb 26 PHP
php实现curl模拟ftp上传的方法
Jul 29 PHP
PHP中addcslashes与stripcslashes函数用法分析
Jan 07 PHP
CentOS下搭建PHP环境与WordPress博客程序的全流程总结
May 07 PHP
Yii2框架数据库简单的增删改查语法小结
Aug 31 PHP
PHP实现文件上传功能实例代码
May 18 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+JS无限级可伸缩菜单详解(简单易懂)
2007/01/02 PHP
用jquery来定位
2007/02/20 Javascript
javascript 火狐(firefox)不显示本地图片问题解决
2008/07/05 Javascript
基于jQuery的弹出框插件
2012/03/18 Javascript
datagrid框架的删除添加与修改
2013/04/08 Javascript
jQuery动态星级评分效果实现方法
2015/08/06 Javascript
JS实现表单中checkbox对勾选中增加边框显示效果
2015/08/21 Javascript
分享一些常用的jQuery动画事件和动画函数
2015/11/27 Javascript
Javascript实现图片轮播效果(一)让图片跳动起来
2016/02/17 Javascript
js字符串截取函数slice、substring和substr的比较
2016/05/17 Javascript
jQuery的实例及必知重要的jQuery选择器详解
2016/05/20 Javascript
JS实现颜色动态淡化效果
2017/03/06 Javascript
Node.JS更改Windows注册表Regedit的方法小结
2017/08/18 Javascript
简单谈谈关于Angular Cli打包的事
2017/09/05 Javascript
AngularJS监听ng-repeat渲染完成的两种方法
2018/01/16 Javascript
JavaScript创建对象的四种常用模式实例分析
2019/01/11 Javascript
javascript创建元素和删除元素实例小结
2019/06/19 Javascript
详解vue-property-decorator使用手册
2019/07/29 Javascript
详解基于Wepy开发小程序插件(推荐)
2019/08/01 Javascript
微信小程序之侧边栏滑动实现过程解析(附完整源码)
2019/08/23 Javascript
js实现点击生成随机div
2020/01/16 Javascript
JS时间戳与日期格式互相转换的简单方法示例
2021/01/30 Javascript
Vue +WebSocket + WaveSurferJS 实现H5聊天对话交互的实例
2020/11/18 Vue.js
Python的地形三维可视化Matplotlib和gdal使用实例
2017/12/09 Python
django2用iframe标签完成网页内嵌播放b站视频功能
2018/06/20 Python
Python中如何使用if语句处理列表实例代码
2019/02/24 Python
利用python-docx模块写批量生日邀请函
2019/08/26 Python
HTML5 通过Vedio标签实现视频循环播放的示例代码
2020/08/05 HTML / CSS
德国价格合理的品牌商品购物网站:averdo
2019/03/21 全球购物
火山咖啡:Volcanica Coffee
2019/10/29 全球购物
大众服装店创业计划书范文
2014/01/01 职场文书
市场调查策划方案
2014/06/10 职场文书
2014年前台文员工作总结
2014/12/08 职场文书
学校青年志愿者活动总结
2015/05/06 职场文书
2016年三严三实党课学习心得体会
2016/01/06 职场文书
mybatis中注解与xml配置的对应关系和对比分析
2021/08/04 Java/Android