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中文本数据翻页(留言本翻页)
Oct 09 PHP
php中根据某年第几天计算出日期年月日的代码
Feb 24 PHP
php中require和require_once的区别说明
Feb 27 PHP
PHP遍历文件夹与文件类及处理类用法实例
Sep 23 PHP
PHP使用json_encode函数时不转义中文的解决方法
Nov 12 PHP
PHP中使用file_get_contents抓取网页中文乱码问题解决方法
Dec 17 PHP
php导入模块文件分享
Mar 17 PHP
php使用post数组的键值创建同名变量并赋值的方法
Apr 03 PHP
PHP爬虫之百万级别知乎用户数据爬取与分析
Jan 22 PHP
php上传图片获取路径及给表单字段赋值的方法
Jan 23 PHP
Laravel框架实现多个视图共享相同数据的方法详解
Jul 09 PHP
php设计模式之工厂模式用法经典实例分析
Sep 20 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/02/08 PHP
php多个字符串替换成同一个的解决方法
2013/06/18 PHP
PHP empty函数报错解决办法
2014/03/06 PHP
PHP实现的redis主从数据库状态检测功能示例
2017/07/20 PHP
javascript 显示当前系统时间代码
2009/12/28 Javascript
网页中返回顶部代码(多种方法)另附注释说明
2013/04/24 Javascript
JQuery 控制内容长度超出规定长度显示省略号
2014/05/23 Javascript
jquery右下角自动弹出可关闭的广告层
2015/05/08 Javascript
JavaScript中的prototype原型学习指南
2016/05/09 Javascript
Javascript将数值转换为金额格式(分隔千分位和自动增加小数点)
2016/06/22 Javascript
vue+vuex+json-seiver实现数据展示+分页功能
2019/04/11 Javascript
Vue+Typescript中在Vue上挂载axios使用时报错问题
2019/08/07 Javascript
vue实现侧边栏导航效果
2019/10/21 Javascript
javascript实现前端成语点击验证优化
2020/06/24 Javascript
Openlayers学习之地图比例尺控件
2020/09/28 Javascript
nodeJs项目在阿里云的简单部署
2020/11/27 NodeJs
在Python中操作字典之setdefault()方法的使用
2015/05/21 Python
Python编程实现从字典中提取子集的方法分析
2018/02/09 Python
python使用mysql的两种使用方式
2018/03/07 Python
Python aiohttp百万并发极限测试实例分析
2019/10/26 Python
pandas 中对特征进行硬编码和onehot编码的实现
2019/12/20 Python
突袭HTML5之Javascript API扩展3—本地存储全新体验
2013/01/31 HTML / CSS
世界上最大的各式箱包网络零售店:eBag
2016/07/21 全球购物
意大利会呼吸的鞋:Geox健乐士
2017/02/12 全球购物
有机婴儿毛毯和衣服:Monica + Andy
2020/03/01 全球购物
泰国最新活动和优惠:Megatix
2020/05/07 全球购物
EJB面试题
2015/07/28 面试题
函授本科自我鉴定
2013/11/03 职场文书
技能比赛获奖感言
2014/02/14 职场文书
城管大队整治方案
2014/05/06 职场文书
员工安全生产承诺书
2014/05/22 职场文书
教师职位说明书
2014/07/29 职场文书
校长个人总结
2015/03/03 职场文书
PyTorch 如何自动计算梯度
2021/05/23 Python
新手必备Python开发环境搭建教程
2021/05/28 Python
 Redis 串行生成顺序编码的方法实现
2022/04/03 Redis