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 相关文章推荐
MySQL GBK→UTF-8编码转换
May 24 PHP
PHP 获取客户端真实IP地址多种方法小结
May 15 PHP
第4章 数据处理-php数组的处理-郑阿奇
Jul 04 PHP
php如何解决无法上传大于8M的文件问题
Mar 10 PHP
PHP防止注入攻击实例分析
Nov 03 PHP
PHP实现小偷程序实例
Oct 31 PHP
PHP HTTP 认证实例详解
Nov 03 PHP
php格式化时间戳
Dec 17 PHP
PHP iconv()函数字符编码转换的问题讲解
Mar 22 PHP
Laravel 登录后清空COOKIE的操作方法
Oct 14 PHP
实例讲解PHP表单
Jun 10 PHP
php实现简易计算器
Aug 28 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 STRING 陷阱原理说明
2010/07/24 PHP
关于PHP语言构造器介绍
2013/07/08 PHP
PHP简单预防sql注入的方法
2016/09/27 PHP
php实现小程序支付完整版
2018/10/09 PHP
PHP实现一个限制实例化次数的类示例
2019/09/16 PHP
使用PHP+Redis实现延迟任务,实现自动取消订单功能
2019/11/21 PHP
PHP中用Trait封装单例模式的实现
2019/12/18 PHP
PHPExcel实现的读取多工作表操作示例
2020/04/14 PHP
自己动手开发jQuery插件教程
2011/08/25 Javascript
防止浏览器记住用户名及密码的简单实用方法
2013/04/22 Javascript
JS和jquery获取各种屏幕的宽度和高度的代码
2013/08/02 Javascript
document.execCommand()的用法小结
2014/01/08 Javascript
js实现发送验证码后的倒计时功能
2015/05/28 Javascript
localResizeIMG先压缩后使用ajax无刷新上传(移动端)
2015/08/11 Javascript
拥Bootstrap入怀——导航栏篇
2016/05/30 Javascript
JavaScript+Java实现HTML页面转为PDF文件保存的方法
2016/05/30 Javascript
AngularJS  $modal弹出框实例代码
2016/08/24 Javascript
详解JS中定时器setInterval和setTImeout的this指向问题
2017/01/06 Javascript
jQuery实现简易的输入框字数计数功能示例
2017/01/16 Javascript
原生JS实现N级菜单的代码
2017/05/21 Javascript
浅谈Node.js CVE-2017-14849 漏洞分析(详细步骤)
2017/11/10 Javascript
Angular学习教程之RouterLink花式跳转
2018/05/03 Javascript
Python cookbook(数据结构与算法)将名称映射到序列元素中的方法
2018/03/22 Python
PyCharm代码整体缩进,反向缩进的方法
2018/06/25 Python
纯css3实现思维导图样式示例
2018/11/01 HTML / CSS
会话Bean的种类
2013/11/07 面试题
函授本科自我鉴定
2013/11/03 职场文书
咖啡厅创业计划书范本
2014/01/22 职场文书
群众路线对照检查材料思想汇报怎么写
2014/09/18 职场文书
电子银行业务授权委托书
2014/10/10 职场文书
公司借款担保书
2015/09/22 职场文书
2016年春季开学典礼新闻稿
2015/11/25 职场文书
写作指导:怎么书写竞聘演讲稿?
2019/07/04 职场文书
PyQt5 QThread倒计时功能的实现代码
2021/04/02 Python
MySQL范围查询优化的场景实例详解
2022/06/10 MySQL
mysql实现将字符串字段转为数字排序或比大小
2022/06/14 MySQL