PHP实例方法与变量


PHP instance method vs. variable

有可能下面的两个代码给出不同的结果?

$message = new Message();
$cond = $message->getMessage();
$helper->log($cond);
if(!empty($cond)){
  // do my stuff
}

这就是我开始想知道为什么给我不同的结果:

$message = new Message();
$helper->log($message->getMessage());
if(!empty($message->getMessage())){
  // do my stuff
}

我所修改的只是将$cond变量改为$message->getMessage()

这是Message类的构造子:

class Message {
  private $input;
  private $message;
public function Message()
{
  $this->input = json_decode(file_get_contents('php://input'), true);
  // ...
  $this->message = $this->input['entry'][0]['messaging'][0]['message']['text'];
  //...
}
}

这是getter方法

public function getMessage()
{
  return $this->message;
}

请查看您的php_error_log。

PHP的空不支持表达式当你使用PHP版本<5.5:

在PHP 5.5之前,empty()只支持变量;其他的都可以导致解析错误。[…]

可能这就是为什么你的if语句中的代码没有到达的原因。