简体   繁体   English

在 HHVM 上用 PHP 请求参数

[英]Request parameters in PHP on HHVM

I'm running HHVM 3.2.0 and trying to get access to GET and POST request parameters.我正在运行 HHVM 3.2.0 并尝试访问 GET 和 POST 请求参数。 The problem is, HHVM doesn't support access to PHP superglobals ( $_GET , $_POST , $_SERVER , etc).问题是, HHVM 不支持访问 PHP 超全局变量$_GET$_POST$_SERVER等)。

The only other way I know of getting access to request parameters in PHP is via the filter_input function, but is that really best practice (if I'm just using the raw filter)?我知道在 PHP 中访问请求参数的唯一另一种方法是通过filter_input函数,但这真的是最佳实践吗(如果我只是使用原始过滤器)? It seems as though HHVM should support something cleaner than that.似乎 HHVM 应该支持比这更清晰的东西。 (What about Hack?) (哈克呢?)

HHVM absolutely supports superglobals in PHP code -- they're a really key part of PHP! HHVM 绝对支持 PHP 代码中的超全局变量——它们是 PHP 的真正关键部分! The docs page you've linked to is simply wrong, and I've filed a bug to get it fixed .您链接到的文档页面完全是错误的,我已经提交了一个错误来修复它

In strict mode Hack code, superglobals are not supported;在严格模式 Hack 代码中,不支持超全局变量; this cookbook example shows how you can access them via partial mode.这个食谱示例展示了如何通过部分模式访问它们。

Seems like they added HH\\global_get() to get global variables.似乎他们添加了HH\\global_get()来获取全局变量。

https://docs.hhvm.com/hack/reference/function/HH.global_get/https://docs.hhvm.com/hack/reference/function/HH.global_get/

To put everything together把所有东西放在一起

use namespace \Facebook\TypeSpec;

// get $_GET using global_get
function global_get_get(): darray<arraykey, mixed> {
  $spec = TypeSpec\darray(
    TypeSpec\arraykey(),
    TypeSpec\mixed(),
  );
  return $spec->assertType(\HH\global_get("_GET"));
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM