Php isset()和属性_exists()未检测到属性

Php isset()和属性_exists()未检测到属性,php,Php,虽然我想看看这个的http状态代码,但我没有访问权限。因此,我正在查看response类,试图确定某个属性是否存在,并且遇到了一些问题。这是PHP7 private function wasRateLimited(Result $result) : bool { var_dump($result, isset($result->retry_after), property_exists($result, 'retry_after')); return isset($res

虽然我想看看这个的http状态代码,但我没有访问权限。因此,我正在查看response类,试图确定某个属性是否存在,并且遇到了一些问题。这是PHP7

private function wasRateLimited(Result $result) : bool
{
    var_dump($result, isset($result->retry_after), property_exists($result, 'retry_after'));

    return isset($result->retry_after);
}
以下是输出:

/Users/myuser/mysite/app/Discord/MessageSender.php:95:
class GuzzleHttp\Command\Result#1153 (3) {
  public $global =>
  bool(false)
  public $message =>
  string(27) "You are being rate limited."
  public $retry_after =>
  int(3615)
}
/Users/myuser/mysite/app/Discord/MessageSender.php:95:
bool(false)
/Users/myuser/mysite/app/Discord/MessageSender.php:95:
bool(false)
为什么我无法确定响应上是否存在此属性?

请尝试以下操作:

private function wasRateLimited(Result $result) : bool
{
    var_dump($result, isset($result->retry_after), property_exists($result, 'retry_after'));

    return ($result->retry_after) ? true : false;
}
由于Guzzle类Result实现了扩展ArrayAccess的ResultInterface,因此必须使用$Result['retry\u after']来获取属性

var_dump( $result['retry_after'] );

var_dump( isset( $result['retry_after'] ) );

您正在确定它是否存在。显然不是。我猜它是通过神奇的方法检索到的。你能发布Result类的代码吗?var_转储$Result['retry_after']是什么;你呢?尝试ArrayAccessthought@Scuzzy这就给了我所需要的整洁,类Result实现了ResultInterface,它扩展了ArrayAccess,您应该能够做到设置$Result['retry\u after']然后,我得到了未定义的属性:GuzzleHttp\Command\Result:$retry\u after,用于没有that@Webnet您可以通过添加ini\u集合“显示错误”来隐藏警告,0;ini设置“显示启动错误”,0;错误报告0;在脚本之上,但这不是最好的解决方案。