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函数之子字符串替换&amp;#65279; str_replace
Mar 23 PHP
php创建基本身份认证站点的方法详解
Jun 08 PHP
php计算数组不为空元素个数的方法
Jan 27 PHP
ThinkPHP3.1查询语言详解
Jun 19 PHP
基于CakePHP实现的简单博客系统实例
Jun 28 PHP
PHP实现上传图片到 zimg 服务器
Oct 19 PHP
PHP读取CSV大文件导入数据库的实例
Jul 24 PHP
PHP实现mysqli批量执行多条语句的方法示例
Jul 22 PHP
PHP实现数组的笛卡尔积运算示例
Dec 15 PHP
php常用经典函数集锦【数组、字符串、栈、队列、排序等】
Aug 23 PHP
解决PHP Opcache 缓存刷新、代码重载出现无法更新代码的问题
Aug 24 PHP
6个常见的 PHP 安全性攻击实例和阻止方法
Dec 16 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 file_get_contents 函数超时的几种解决方法
2009/07/30 PHP
用php实现的获取网页中的图片并保存到本地的代码
2010/01/05 PHP
PHP Class&amp;Object -- 解析PHP实现二叉树
2013/06/25 PHP
php禁止直接从浏览器输入地址访问.php文件的方法
2014/11/04 PHP
PHP多态代码实例
2015/06/26 PHP
thinkphp5框架路由原理与用法详解
2020/02/11 PHP
超强的IE背景图片闪烁(抖动)的解决办法
2007/09/09 Javascript
jQuery操作select的实例代码
2012/06/14 Javascript
页面实时更新时间的JS实例代码
2013/12/18 Javascript
JS实现横向拉伸动感伸缩菜单效果代码
2015/09/04 Javascript
以JavaScript来实现WordPress中的二级导航菜单的方法
2015/12/14 Javascript
深入浅析Node.js 事件循环
2015/12/20 Javascript
Node.js重新刷新session过期时间的方法
2016/02/04 Javascript
基于javascript实现简单的抽奖系统
2020/04/15 Javascript
利用jquery实现实时更新歌词的方法
2017/01/06 Javascript
vue的Virtual Dom实现snabbdom解密
2017/05/03 Javascript
jQuery实现的简单动态添加、删除表格功能示例
2017/09/21 jQuery
Express下采用bcryptjs进行密码加密的方法
2018/02/07 Javascript
使用Angular CLI快速创建Angular项目的一些基本概念和写法小结
2018/04/22 Javascript
朴素贝叶斯算法的python实现方法
2014/11/18 Python
Python爬取网易云音乐上评论火爆的歌曲
2017/01/19 Python
对python制作自己的数据集实例讲解
2018/12/12 Python
python-itchat 统计微信群、好友数量,及原始消息数据的实例
2019/02/21 Python
对python中的*args与**kwgs的含义与作用详解
2019/08/28 Python
Python中qutip用法示例详解
2020/10/02 Python
如何通过python实现IOU计算代码实例
2020/11/02 Python
CSS3毛玻璃效果(blur)有白边问题的解决方法
2016/11/15 HTML / CSS
荷兰鞋子在线:Nelson Schoenen
2017/12/25 全球购物
eBay瑞士购物网站:eBay.ch
2018/12/24 全球购物
平面设计的岗位职责
2013/11/08 职场文书
交通事故私了协议书
2014/04/16 职场文书
“四风”查摆问题自我剖析材料
2014/09/27 职场文书
房屋租赁协议书
2014/10/18 职场文书
不尊敬老师的检讨书
2014/12/21 职场文书
2015年生产部工作总结范文
2015/05/25 职场文书
MySQL如何构建数据表索引
2021/05/13 MySQL