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 23 PHP
php 伪造本地文件包含漏洞的代码
Nov 03 PHP
解析php通过cookies获取远程网页的指定代码
Jun 25 PHP
编写Smarty插件在模板中直接加载数据的详细介绍
Jun 26 PHP
php实现统计邮件大小的方法
Aug 06 PHP
在Mac OS下搭建LNMP开发环境的步骤详解
Mar 10 PHP
PC端微信扫码支付成功之后自动跳转php版代码
Jul 07 PHP
PHP中localeconv()函数的用法
Mar 26 PHP
PHP的介绍以及优势详细分析
Sep 05 PHP
php新建文件的方法实例
Sep 26 PHP
PHPstorm激活码2020年5月13日亲测有效
Sep 17 PHP
PHP中的异常处理机制深入讲解
Nov 10 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
第四节--构造函数和析构函数
2006/11/16 PHP
解析阿里云ubuntu12.04环境下配置Apache+PHP+PHPmyadmin+MYsql
2013/06/26 PHP
thinkPHP下的widget扩展用法实例分析
2015/12/26 PHP
php之可变变量的实例详解
2017/09/12 PHP
不能再简单的无闪刷新验证码原理很简单
2007/11/05 Javascript
extjs fckeditor集成代码
2009/05/10 Javascript
滚动条变色 隐藏滚动条与双击网页自动滚屏显示代码
2009/12/28 Javascript
IE6/7/8中Option元素未设value时Select将获取空字符串
2011/04/07 Javascript
js控制div弹出层实现方法
2015/05/11 Javascript
js+flash实现的5图变换效果广告代码(附演示与demo源码下载)
2016/04/01 Javascript
js控住DOM实现发布微博效果
2016/08/30 Javascript
Ionic2系列之使用DeepLinker实现指定页面URL
2016/11/21 Javascript
JS 组件系列之 bootstrap treegrid 组件封装过程
2017/04/28 Javascript
vue-cli项目如何使用vue-resource获取本地的json数据(模拟服务端返回数据)
2017/08/04 Javascript
解决Vue2.0中使用less给元素添加背景图片出现的问题
2018/09/03 Javascript
ES6 Promise对象的应用实例分析
2019/06/27 Javascript
layui 实现加载动画以及非真实加载进度的方法
2019/09/23 Javascript
javascript的hashCode函数实现代码小结
2020/08/11 Javascript
python查看FTP是否能连接成功的方法
2015/07/30 Python
python中map()与zip()操作方法
2016/02/27 Python
Python简单网络编程示例【客户端与服务端】
2017/05/26 Python
破解安装Pycharm的方法
2018/10/19 Python
详解Python locals()的陷阱
2019/03/26 Python
使用python的pandas为你的股票绘制趋势图
2019/06/26 Python
如何通过python的fabric包完成代码上传部署
2019/07/29 Python
python multiprocessing模块用法及原理介绍
2019/08/20 Python
接口中的方法可以是abstract的吗
2015/07/23 面试题
xxx同志考察材料
2014/02/07 职场文书
活动总结的格式
2014/05/07 职场文书
运动会通讯稿600字
2015/07/20 职场文书
工作简报范文
2015/07/21 职场文书
2016校本研修培训心得体会
2016/01/08 职场文书
房屋买卖定金协议书
2016/03/21 职场文书
使用Springboot实现健身房管理系统
2021/07/01 Java/Android
如何利用Python实现n*n螺旋矩阵
2022/01/18 Python