如果你有一个抽象类,有没有办法在抽象类中保留一个计数器来计算它被使用了多少次?
因为如果我这样做:
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和2,并且我对它的工作方式感到困惑。
编辑:更改代码以更多地反映真实代码:)
答案 0 :(得分:3)
如果您希望跟踪实例化类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。