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 ? EasyUI DataGrid 资料存的方式介绍
Nov 07 PHP
PHP CodeBase:将时间显示为&quot;刚刚&quot;&quot;n分钟/小时前&quot;的方法详解
Jun 06 PHP
php中使用getimagesize获取图片、flash等文件的尺寸信息实例
Apr 29 PHP
Javascript与PHP验证用户输入URL地址是否正确
Oct 09 PHP
php返回字符串中所有单词的方法
Mar 09 PHP
CodeIgniter使用smtp服务发送html邮件的方法
Jun 10 PHP
php实现转换ubb代码的方法
Jun 18 PHP
ThinkPHP 整合Bootstrap Ajax分页样式
Dec 23 PHP
如何通过View::first使用Laravel Blade的动态模板详解
Sep 21 PHP
PHP有序表查找之二分查找(折半查找)算法示例
Feb 09 PHP
分析php://output和php://stdout的区别
May 06 PHP
Laravel5.1 框架路由基础详解
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操作XML作为数据库的类
2010/12/19 PHP
php curl获取网页内容(IPV6下超时)的解决办法
2013/07/16 PHP
WordPress中&quot;无法将上传的文件移动至&quot;错误的解决方法
2015/07/01 PHP
利用PHP扩展Xhprof分析项目性能实践教程
2018/09/05 PHP
JS将光标聚焦在文本最后的实现代码
2014/03/28 Javascript
javascript实现一个数值加法函数
2015/06/26 Javascript
javascript实现网页屏蔽Backspace事件,输入框不屏蔽
2015/07/21 Javascript
JavaScript的for循环中嵌套一个点击事件的问题解决
2017/03/03 Javascript
vue+axios实现登录拦截的实例代码
2017/05/22 Javascript
AngularJS 异步解决实现方法
2017/06/12 Javascript
[03:46]DOTA2英雄基础教程 维萨吉
2013/12/11 DOTA
python错误处理详解
2014/09/28 Python
Python获取Windows或Linux主机名称通用函数分享
2014/11/22 Python
Python中的各种装饰器详解
2015/04/11 Python
python实现自动重启本程序的方法
2015/07/09 Python
Python编程之变量赋值操作实例分析
2017/07/24 Python
使用Python的turtle模块画图的方法
2017/11/15 Python
hmac模块生成加入了密钥的消息摘要详解
2018/01/11 Python
python 处理dataframe中的时间字段方法
2018/04/10 Python
Python实现的朴素贝叶斯算法经典示例【测试可用】
2018/06/13 Python
django做form表单的数据验证过程详解
2019/07/26 Python
python文字转语音的实例代码分析
2019/11/12 Python
python处理RSTP视频流过程解析
2020/01/11 Python
python操作链表的示例代码
2020/09/27 Python
CSS3新增布局之: flex详解
2020/06/18 HTML / CSS
html5 兼容IE6结构的实现代码
2012/05/14 HTML / CSS
加拿大奢华时装品牌:Mackage
2018/01/10 全球购物
荣耀商城:HIHONOR
2020/11/03 全球购物
HSRP的含义以及如何工作
2014/09/10 面试题
工作睡觉检讨书
2014/02/25 职场文书
临床专业自荐信
2014/06/22 职场文书
教育实习指导教师评语
2014/12/31 职场文书
户外活动总结
2015/02/04 职场文书
2016年三八节红领巾广播稿
2015/12/17 职场文书
MySQL 逻辑备份与恢复测试的相关总结
2021/05/14 MySQL
weblogic服务建立数据源连接测试更新mysql驱动包的问题及解决方法
2022/01/22 MySQL