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 生成的XML以FLASH获取为乱码终极解决
Aug 07 PHP
php中判断文件存在是用file_exists还是is_file的整理
Sep 12 PHP
深入PHP中的HashTable结构详解
Jun 13 PHP
ThinkPHP模板中判断volist循环的最后一条记录的验证方法
Jul 01 PHP
PHP统计目录大小的自定义函数分享
Nov 18 PHP
PHP易混淆函数的区别及用法汇总
Nov 22 PHP
php获取文章上一页与下一页的方法
Dec 01 PHP
php使用mysqli向数据库添加数据的方法
Mar 20 PHP
php上传excel表格并获取数据
Apr 27 PHP
php使用pecl方式安装扩展操作示例
Aug 12 PHP
Vagrant(WSL)+PHPStorm+Xdebu 断点调试环境搭建
Dec 13 PHP
PHP之header函数详解
Mar 02 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
PHPMyadmin 配置文件详解(配置)
2009/12/03 PHP
PHP编程过程中需要了解的this,self,parent的区别
2009/12/30 PHP
PHP unset函数原理及使用方法解析
2020/08/14 PHP
javascript instanceof 内部机制探析
2010/10/15 Javascript
jQuery图片预加载 等比缩放实现代码
2011/10/04 Javascript
js定时调用方法成功后并停止调用示例
2014/04/08 Javascript
jquery注册文本框获取焦点清空,失去焦点赋值的简单实例
2016/09/08 Javascript
BootStrap表单验证 FormValidation 调整反馈图标位置的实例代码
2017/05/17 Javascript
基于zepto.js实现手机相册功能
2017/07/11 Javascript
js中less常用的方法小结
2017/08/09 Javascript
vue封装第三方插件并发布到npm的方法
2017/09/25 Javascript
vue实现引入本地json的方法分析
2018/07/12 Javascript
AngularJS 事件发布机制
2018/08/28 Javascript
12个提高JavaScript技能的概念(小结)
2019/05/09 Javascript
JavaScript适配器模式原理与用法实例详解
2020/03/09 Javascript
[01:01:29]2018DOTA2亚洲邀请赛 4.4 淘汰赛 VP vs Liquid 第一场
2018/04/05 DOTA
[58:23]LGD vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
Python实现在matplotlib中两个坐标轴之间画一条直线光标的方法
2015/05/20 Python
Python脚本实现虾米网签到功能
2016/04/12 Python
在Linux命令行终端中使用python的简单方法(推荐)
2017/01/23 Python
Python网络编程 Python套接字编程
2017/09/13 Python
Python开发之基于模板匹配的信用卡数字识别功能
2020/01/13 Python
Python如何给你的程序做性能测试
2020/07/29 Python
Python列表推导式实现代码实例
2020/09/09 Python
matplotlib bar()实现多组数据并列柱状图通用简便创建方法
2021/02/24 Python
法学毕业生自荐信
2013/11/13 职场文书
美术专业个人自我评价
2014/01/18 职场文书
九年级体育教学反思
2014/01/23 职场文书
四年大学生活的自我评价范文
2014/02/07 职场文书
文化宣传方案
2014/03/13 职场文书
党员干部承诺书
2014/03/25 职场文书
关于成绩下滑的自我检讨书
2014/09/20 职场文书
建设工程授权委托书
2014/09/22 职场文书
法院四风对照检查材料思想汇报
2014/10/06 职场文书
纪委立案决定书
2015/06/24 职场文书
车辆管理制度范本
2015/08/05 职场文书