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来实现网络服务
Sep 15 PHP
PHP number_format() 函数定义和用法
Jun 01 PHP
php求正负数数组中连续元素最大值示例
Apr 11 PHP
php计算整个目录大小的方法
Jun 19 PHP
PHP7.0安装笔记整理
Aug 28 PHP
PHP中set error handler函数用法小结
Nov 11 PHP
php利用gd库为图片添加水印
Nov 09 PHP
浅谈PHP中的错误处理和异常处理
Feb 04 PHP
PHP ADODB生成HTML表格函数rs2html功能【附错误处理函数用法】
May 29 PHP
Yii框架参数配置文件params用法实例分析
Sep 11 PHP
PHP中的异常处理机制深入讲解
Nov 10 PHP
php解析非标准json、非规范json的方式实例
Dec 10 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 中的类
2006/10/09 PHP
PHP使用ODBC连接数据库的方法
2015/07/18 PHP
php 实现Hash表功能实例详解
2016/11/29 PHP
使用新的消息弹出框blackbirdjs
2008/10/16 Javascript
Ruffy javascript 学习笔记
2009/11/30 Javascript
jquery自动完成插件(autocomplete)应用之PHP版
2009/12/15 Javascript
浅析jQuery中常用的元素查找方法总结
2013/07/04 Javascript
深入理解JavaScript系列(37):设计模式之享元模式详解
2015/03/04 Javascript
总结JavaScript设计模式编程中的享元模式使用
2016/05/21 Javascript
Javascript删除指定元素节点的方法
2016/06/21 Javascript
jQuery时间日期三级联动(推荐)
2016/11/27 Javascript
js验证手机号、密码、短信验证码代码工具类
2020/06/24 Javascript
js模态对话框使用方法详解
2017/02/16 Javascript
JS设计模式之访问者模式定义与用法分析
2018/02/05 Javascript
vscode配置vue下的es6规范自动格式化详解
2019/03/20 Javascript
React中使用外部样式的3种方式(小结)
2019/05/28 Javascript
Nodejs异步流程框架async的方法
2019/06/07 NodeJs
Python实现压缩与解压gzip大文件的方法
2016/09/18 Python
Python基于OpenCV库Adaboost实现人脸识别功能详解
2018/08/25 Python
Python实现多级目录压缩与解压文件的方法
2018/09/01 Python
详谈Python 窗体(tkinter)表格数据(Treeview)
2018/10/11 Python
详解Python_shutil模块
2019/03/15 Python
浅析Python数字类型和字符串类型的内置方法
2019/12/22 Python
在Mac中PyCharm配置python Anaconda环境过程图解
2020/03/11 Python
Python实现简单的2048小游戏
2021/03/01 Python
PPP协议组成及简述协议协商的基本过程
2015/05/28 面试题
文员个人求职自荐信
2013/09/21 职场文书
保安的辞职报告怎么写
2014/01/20 职场文书
报表员工作失误检讨书范文
2014/09/19 职场文书
毕业证代领委托书
2014/09/26 职场文书
小学假期安全广播稿
2014/09/28 职场文书
离婚协议书怎样才有法律效力
2014/10/10 职场文书
党支部承诺书
2015/01/20 职场文书
2015仓库保管员年终工作总结
2015/05/13 职场文书
mybatis中sql语句CDATA标签的用法说明
2021/06/30 Java/Android
Python可视化学习之seaborn调色盘
2022/02/24 Python