PHP 抽象类中的计数器变量



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

因为如果我这样做:

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。

最新更新