php抽象类中的计数器变量

php抽象类中的计数器变量,php,Php,如果您有一个抽象类,有没有办法在抽象类中保留一个计数器来计算它被使用了多少次 因为如果我这样做: abstract class abstractClassName { private $counter = 0; public function __construct() { $this->counter++; } public function outputCounter() { echo $this->counter; }

如果您有一个抽象类,有没有办法在抽象类中保留一个计数器来计算它被使用了多少次

因为如果我这样做:

abstract class abstractClassName {

    private $counter = 0;

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

   public function outputCounter() {
     echo $this->counter;
   }

}

class someExtension extends abstractClassName {

  public function __construct() {
    parent::__construct();
  }
}

class someExtensionTwo extends abstractClassName {

  public function __construct() {
    parent::__construct();
  }
}
然后

$class = new someExtension;
$class->outputCounter();
$class2 = new someExtensionTwo;
$class2->outputCounter();
我两次得到1,但我期望在最后一次通话中得到1,然后是2,我对这一切意味着如何工作感到困惑


编辑:更改代码以更多地反映真实代码:)

如果您希望跟踪类
AbstractClassName
被实例化的时间,则需要使用静态变量,以便
$this->counter
的值是持久的,例如:

abstract class abstractClassName
{
    private static $counter = 0;

    public function __construct() {
      self::$counter++;
    }

    public function outputCounter() {
     echo self::$counter;
    }
}

class someExtension extends abstractClassName
{
   public function __construct() {
     parent::__construct();
   }
 }

class someOtherExtension extends abstractClassName
{
   public function __construct() {
     parent::__construct();
   }
 }

$class = new someExtension;
$class->outputCounter();

$class2 = new someOtherExtension;
$class2->outputCounter();

这将导致输出:1和2。

在构造对象之后,您没有做任何事情来增加计数器。你只调用过一次类,所以数字是1。你只对构造函数中的
$counter
进行了递增(只使用代码中的
new
关键字调用过一次)。你想知道计数器被使用了多少次还是类被实例化了多少次吗?谢谢大家,你是对的,但这是因为我写了一个简单的例子,我编辑了一个更真实的反映所涉及的代码。“编辑:更改代码以更真实地反映真实代码”如果你想麻烦我们,请礼貌地发布实际代码。