为什么我的 return 函数不工作?

Why isn't my return function not working?

我正在 PHP 学习面向对象编程,在我的课程中,老师使用 return 函数来打印函数属性。

我自己试了一下,没有出现。然后我 copy/pasted 它仍然无法正常工作。我知道这不正常,想确定这是 WAMP 问题还是 PHP7.2.18。已试穿 chrome。 当我超过100的时候,错误就在这里,这很正常。

我写信的时候,错误也在这里

但是当我写一个 0 到 100 之间的数字时,它通常应该 return 我的答案。

class Personnage
{
  private $_force;
  private $_experience;
  private $_degats;

  public function frapper(Personnage $persoAFrapper)
  {
    $persoAFrapper->_degats += $this->_force;
  }

  public function gagnerExperience()
  {
    $this->_experience++;
  }

  // Mutateur chargé de modifier l'attribut $_force.
  public function setForce($force)
  {
    if (!is_int($force)) // S'il ne s'agit pas d'un nombre entier.
    {
      trigger_error('La force d\'un personnage doit être un nombre entier', E_USER_WARNING);
      return;
    }

    if ($force > 100) // On vérifie bien qu'on ne souhaite pas assigner une valeur supérieure à 100.
    {
      trigger_error('La force d\'un personnage ne peut dépasser 100', E_USER_WARNING);
      return;
    }

    $this->_force = $force;
  }

  // Ceci est la méthode force() : elle se charge de renvoyer le contenu de l'attribut $_force.
  public function force()
  {
    return $this->_force;
  }
}
$perso = new Personnage;
$perso->setForce(100);
$perso->force();

输出应该是 50,但是,正如我所说,什么都没有。

如果你想要$perso->force();作为输出你必须回应它

echo $perso->force();

通常不会自动打印任何内容,除非您渲染它(例如使用 echovar_dump())。

有两种可能的方法:

  1. 而不是 return 在函数中使用 echo。但是,在这种情况下,您应该将函数名称更改为 printForce()renderForce() 之类的名称,以表达函数的作用。

  2. 在函数外使用 return 值。您可以使用 echo $perso->force() 直接回显它,或者将 return 值保存到变量:$force = $perso->force() 并在代码中的其他地方打印 $force 的值。重命名函数在这里也有意义:getForce() 更足以表达函数将 return 一些值。

使用return不会显示数据,您应该使用echo/print/etc来显示"return"数据值。