本文来自 Serverless 社区用户「逸笙」投稿
由于云函数 SCF 本身是用 bootstrap.php
来调用我们的入口函数,默认为 index.main\_handler
,意思是调用 index.php
文件中的 main\_handler()
,所以很多地方写法要有改变。php 一般提供网页服务,所以我主要讲API 网关配合的云函数 SCF。
main_handler($event, $context)函数会传入2个参数,首先这2个参数是object,需要用->来访问子项,如 $event->{'headers'} ,不是很方便,我一般转换成数组:
$event = json_decode(json_encode($event), true);
这样就比较方便了,如 $event['headers']['host'] 。
大家可以打印这两个参数看一眼里面有些什么。
我们可以从中获取到很多有用的东西,比如:
$_GET = $event['queryString'];
$_POST = $event['body'];
$_COOKIE = $event['headers']['cookie'];
在云函数 SCF 中运行的 php 程序,因为浏览器是提交给 API 网关,不是提交给 SCF 的,这些超全局变量完全没有获取到东西,所以要这样来获取。
但我们发现,$event['body']
与 $event['headers']['cookie']
本身是一个长字符串,里面有好几个值,并且里面 url 编码了,这样不方便使用,所以做些小操作: