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
关键字调用过一次)。你想知道计数器被使用了多少次还是类被实例化了多少次吗?谢谢大家,你是对的,但这是因为我写了一个简单的例子,我编辑了一个更真实的反映所涉及的代码。“编辑:更改代码以更真实地反映真实代码”如果你想麻烦我们,请礼貌地发布实际代码。