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编写PDF文档生成器
Oct 09 PHP
用DBSQL类加快开发MySQL数据库程序的速度
Oct 09 PHP
php 设计模式之 单例模式
Dec 19 PHP
php文档更新介绍
Jul 22 PHP
php异步多线程swoole用法实例
Nov 14 PHP
php对二维数组进行相关操作(排序、转换、去空白等)
Nov 04 PHP
优化WordPress中文章与评论的时间显示
Jan 12 PHP
PHP从数组中删除元素的四种方法实例
May 12 PHP
Laravel框架中Blade模板的用法示例
Aug 30 PHP
PHP应用跨时区功能的实现方法
Mar 21 PHP
Laravel 自动生成验证的实例讲解:login / logout
Oct 14 PHP
PHP 8新特性简介
Aug 18 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 使用memcached简单示例分享
2015/03/05 PHP
weiphp微信公众平台授权设置
2016/01/04 PHP
php 实现进制相互转换
2016/04/07 PHP
PHP基于openssl实现非对称加密代码实例
2020/06/19 PHP
DOM和XMLHttpRequest对象的属性和方法整理
2012/01/04 Javascript
JavaScript实现文字与图片拖拽效果的方法
2015/02/16 Javascript
js实现登陆遮罩效果的方法
2015/07/28 Javascript
JS hashMap实例详解
2016/05/26 Javascript
angular.JS实现网页禁用调试、复制和剪切
2017/03/31 Javascript
解析Vue 2.5的Diff算法
2017/11/28 Javascript
Angular @HostBinding()和@HostListener()用法
2018/03/05 Javascript
jQuery实现的淡入淡出与滑入滑出效果示例
2018/04/18 jQuery
小程序组件之自定义顶部导航实例
2019/06/12 Javascript
微信小程序封装分享与分销功能过程解析
2019/08/13 Javascript
js实现九宫格抽奖
2020/03/19 Javascript
js实现点击上传图片并设为模糊背景
2020/08/02 Javascript
js在HTML的三种引用方式详解
2020/08/29 Javascript
[01:56]2014DOTA2西雅图邀请赛 MVP外卡赛老队长精辟点评
2014/07/09 DOTA
一则python3的简单爬虫代码
2014/05/26 Python
python发送HTTP请求的方法小结
2015/07/08 Python
Python中对元组和列表按条件进行排序的方法示例
2015/11/10 Python
Flask框架学习笔记之路由和反向路由详解【图文与实例】
2019/08/12 Python
python实现的分析并统计nginx日志数据功能示例
2019/12/21 Python
Django 返回json数据的实现示例
2020/03/05 Python
在Mac中PyCharm配置python Anaconda环境过程图解
2020/03/11 Python
pandas DataFrame 数据选取,修改,切片的实现
2020/04/24 Python
Matplotlib中%matplotlib inline如何使用
2020/07/28 Python
python 如何引入协程和原理分析
2020/11/30 Python
Python基于mediainfo批量重命名图片文件
2020/12/29 Python
爱情保证书范文
2014/02/01 职场文书
市场营销专业毕业生求职信
2014/03/26 职场文书
超市采购员岗位职责
2015/04/07 职场文书
2016年小学“我们的节日·中秋节”活动总结
2016/04/05 职场文书
python 经纬度求两点距离、三点面积操作
2021/06/03 Python
Python OpenCV实现传统图片格式与base64转换
2021/06/13 Python
sql通过日期判断年龄函数的示例代码
2021/07/16 SQL Server