我最近在 Mozilla 的工作让我在 Bugzilla 和 Phabricator 之间创建了一个类似 OAuth 的身份验证事务。 这个任务让我回到了 PHP 的世界,除了为这个博客创建 WordPress 主题和插件之外,我没有接触太多的语言(从 ~5.2 版开始)。 回到你多年未接触过的语言感觉就像是一种全新的体验; 您会注意到在过去几年中您不会猜到的模式和方法。
部分身份验证事务需要 Phabricator 接收包含 JSON 数据的 POST 请求。 我曾预计数据会落入 $_POST
但变量为空; 我到底是怎么得到 POST 数据的? 要使用 PHP 获取 POST JSON,请使用以下命令:
# Get JSON as a string
$json_str = file_get_contents('php://input');
# Get as an object
$json_obj = json_decode($json_str);
file_get_contents
,虽然我只用于从本地文件或传统 URL 中检索内容,但允许您使用特殊的 php://input
以字符串形式检索 JSON 数据的地址。 从那里你使用 json_decode
将 JSON 字符串转换为可用的对象/数组。
没有通过正常处理 JSON 是有道理的 $_POST
因为真的没有 key
, 本身; 本质上,您只需要作为一个整体的数据“blob”,它由 php://input
. 您可以使用 cURL 测试 JSON+POST 处理。