簡體   English   中英

為什么我的返回功能不起作用?

[英]Why isn't my return function not working?

我正在學習PHP中的面向對象程序設計,在我的課程中,老師使用return函數來打印函數屬性。

我自己嘗試過,什么也沒出現。 然后,我復制/粘貼了它,但仍然無法正常工作。 我知道這是不正常的,請確保這是WAMP問題還是PHP7.2.18。 在鉻上試過。 當我超過100時,錯誤就在這里,這很正常。

當我寫信時,錯誤也在這里。

但是,當我寫一個介於0到100之間的數字時,它通常應該返回我的答案。

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. 在函數內使用echo代替return 但是,在這種情況下,您應該將函數名稱更改為printForce()renderForce() ,以表達函數的作用。

  2. 在函數外使用返回值。 您可以使用echo $perso->force()直接回顯它,也可以將返回值保存到變量中: $force = $perso->force()並在代碼中的其他位置打印$force的值。 重命名該函數在這里也很有意義: getForce()足以表示,該函數將返回一些值。

使用return不會顯示數據,您應該使用echo / print / etc來顯示“ return”數據值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM