计算 class 实例的特征
Trait that counts instances of class
我想做一个特征,这样我就可以轻松地计算和检索 class 的所有实例。
我知道我需要将它推送到一个数组,但我不知道我应该如何 "store" 数组。我使用 public、私有、静态等吗?
trait Countable
{
public $all = array();
public function addToObjects()
{
//do stuff
$this->all[] = $this->somekindofproperty;
}
}
我希望能够执行以下操作。
$c = new MyClass;
$objects = $c->all();
几乎每个 class 具有此特征的人都应该有自己的数组。
这里我定义了一个名为 counter
的 trait
并在 class 中使用它来存储对象。
trait Counter
{
public static $all = array();
public static function addToObjects($object)
{
if (is_object($object))
{
self::$all[] = $object;
}
}
}
class CountingClass
{
use Counter;
}
class MyClass
{
public function __construct()
{
CountingClass::addToObjects($this);
}
}
$c = new MyClass;
$c = new MyClass;
$c = new MyClass;
$c = new MyClass;
print_r(CountingClass::$all);
输出:
Array
(
[0] => MyClass Object
(
)
[1] => MyClass Object
(
)
[2] => MyClass Object
(
)
[3] => MyClass Object
(
)
)
我想做一个特征,这样我就可以轻松地计算和检索 class 的所有实例。 我知道我需要将它推送到一个数组,但我不知道我应该如何 "store" 数组。我使用 public、私有、静态等吗?
trait Countable
{
public $all = array();
public function addToObjects()
{
//do stuff
$this->all[] = $this->somekindofproperty;
}
}
我希望能够执行以下操作。
$c = new MyClass;
$objects = $c->all();
几乎每个 class 具有此特征的人都应该有自己的数组。
这里我定义了一个名为 counter
的 trait
并在 class 中使用它来存储对象。
trait Counter
{
public static $all = array();
public static function addToObjects($object)
{
if (is_object($object))
{
self::$all[] = $object;
}
}
}
class CountingClass
{
use Counter;
}
class MyClass
{
public function __construct()
{
CountingClass::addToObjects($this);
}
}
$c = new MyClass;
$c = new MyClass;
$c = new MyClass;
$c = new MyClass;
print_r(CountingClass::$all);
输出:
Array
(
[0] => MyClass Object
(
)
[1] => MyClass Object
(
)
[2] => MyClass Object
(
)
[3] => MyClass Object
(
)
)