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 相关文章推荐
检测png图片是否完整的php代码
Sep 06 PHP
用php实现百度网盘图片直链的代码分享
Nov 01 PHP
php sybase_fetch_array使用方法
Apr 15 PHP
php+ajax导入大数据时产生的问题处理
Jun 11 PHP
高性能PHP框架Symfony2经典入门教程
Jul 08 PHP
php+ajax实现无刷新分页的方法
Nov 04 PHP
PHP中each与list用法分析
Jan 08 PHP
php实现按天数、星期、月份查询的搜索框
May 02 PHP
[原创]php简单防盗链验证实现方法
Jul 09 PHP
Thinkphp5行为使用方法汇总
Dec 21 PHP
PHP验证类的封装与使用方法详解
Jan 10 PHP
PHP 裁剪图片
Mar 09 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 远程关机实现代码
2009/11/10 PHP
CodeIgniter采用config控制的多语言实现根据浏览器语言自动转换功能
2014/07/18 PHP
分享XmlHttpRequest调用Webservice的一点心得
2012/07/20 Javascript
JQuery 文本框回车跳到下一个文本框示例代码
2013/08/30 Javascript
jquery动态增加删除表格行的小例子
2013/11/14 Javascript
自制的文件上传JS控件可支持IE、chrome、firefox etc
2014/04/18 Javascript
jQuery插件jPaginate实现无刷新分页
2015/05/04 Javascript
javascript淘宝主图放大镜功能
2016/10/20 Javascript
JS实现点击网页判断是否安装app并打开否则跳转app store
2016/11/18 Javascript
使用ionic在首页新闻中应用到的跑马灯效果的实现方法
2017/02/13 Javascript
js放到head中失效的原因与解决方法
2017/03/07 Javascript
Vuex之理解Mutations的用法实例
2017/04/19 Javascript
JavaScript实现反转字符串的方法详解
2017/04/27 Javascript
微信小程序开发之实现自定义Toast弹框
2017/06/08 Javascript
vue-star评星组件开发实例
2018/03/01 Javascript
用Electron写个带界面的nodejs爬虫的实现方法
2019/01/29 NodeJs
微信小程序实现单选选项卡切换效果
2020/06/19 Javascript
Python的Tornado框架的异步任务与AsyncHTTPClient
2016/06/27 Python
django 创建过滤器的实例详解
2017/08/14 Python
Django框架模板语言实例小结【变量,标签,过滤器,继承,html转义】
2019/05/23 Python
Django网络框架之HelloDjango项目创建教程
2019/06/06 Python
python Django中models进行模糊查询的示例
2019/07/18 Python
Django数据库操作之save与update的使用
2020/04/01 Python
CSS3旋转——彩色扇子兼容firefox浏览器
2013/06/04 HTML / CSS
狗狗玩具、零食和咀嚼物的月度送货服务:Super Chewer
2018/08/22 全球购物
Europcar澳大利亚官网:全球汽车租赁领域的领导者
2019/03/24 全球购物
美国时尚假发购物网站:Wigsbuy
2019/04/06 全球购物
请解释在new与override的区别
2012/10/29 面试题
META-INF文件夹中的MANIFEST.MF的作用
2016/06/21 面试题
主题党日活动总结
2014/07/08 职场文书
庆元旦演讲稿
2014/09/15 职场文书
科学发展观标语
2014/10/08 职场文书
租车协议书范本2014
2014/11/17 职场文书
如何在CocosCreator里画个炫酷的雷达图
2021/04/16 Javascript
利用Selenium添加cookie实现自动登录的示例代码(fofa)
2021/05/08 Python
vue 实现弹窗关闭后刷新效果
2022/04/08 Vue.js