PHP - 在函数返回中增加一个变量

MrU*_*own 1 php oop increment

这是一个非常简单的类的 2 个版本。

getCounterIncrement()两个版本中只有功能不同。

版本 1

class Counter {

  protected $counter;

  public function __construct() {

    $this->counter = 0;
  }

  public function getCounterIncrement() {

    return $this->counter++;
  }
}

$counter = new Counter;
print $counter->getCounterIncrement(); // outputs 0
print $counter->getCounterIncrement(); // outputs 1
Run Code Online (Sandbox Code Playgroud)

版本 2

class Counter {

  protected $counter;

  public function __construct() {

    $this->counter = 0;
  }

  public function getCounterIncrement() {

    $this->counter++;
    return $this->counter;
  }
}

$counter = new Counter;
print $counter->getCounterIncrement(); // outputs 1
print $counter->getCounterIncrement(); // outputs 2
Run Code Online (Sandbox Code Playgroud)

问题

  • 为什么两个版本的输出不同?
  • 就编码标准而言,这两个版本中的一个是否比另一个更好?
  • 会有更好/更好的编码方式吗?

Han*_*nky 5

++在变量名之后或之前的标准情况。如果它出现在变量名称之后,则在这种情况下,您将获得返回为 0 的先前值。当您在变量之后拥有它时,您首先将其递增并返回该新值。

它们都不是更好更坏的方法,它只是两个不同的运算符,可以根据需要在不同的情况下使用。Post-IncrementPre-Increment他们被称为与同为递减。

PHP 自增/自减运算符

我可能会像这样重写一点(即使这不是更好的方法)

<?php

class Counter {
  protected $counter;

  public function __construct() {
    $this->counter = 0;
  }

  public function incrementValue()
  {
    $this->counter++;
  }
  public function getValue() {
    return $this->counter;
  }
}

$counter = new Counter;
$counter->incrementValue();
print $counter->getValue();
Run Code Online (Sandbox Code Playgroud)

PS:看你的个人资料,我觉得你问这个问题是为了好玩?