Php 统计类实例的特性
我有一个特点,我想使我可以很容易地计数和检索类的所有实例。 我知道我需要将它推送到一个数组中,但我不知道如何“存储”数组。我是否使用公共、私有、静态等Php 统计类实例的特性,php,oop,traits,Php,Oop,Traits,我有一个特点,我想使我可以很容易地计数和检索类的所有实例。 我知道我需要将它推送到一个数组中,但我不知道如何“存储”数组。我是否使用公共、私有、静态等 trait Countable { public $all = array(); public function addToObjects() { //do stuff $this->all[] = $this->somekindofproperty; } } 我希望能够做到以下几点 $c = n
trait Countable
{
public $all = array();
public function addToObjects()
{
//do stuff
$this->all[] = $this->somekindofproperty;
}
}
我希望能够做到以下几点
$c = new MyClass;
$objects = $c->all();
几乎每个具有此特性的类都应该有自己的数组。在这里,我定义了一个名为
counter
的特性
,并在类中使用它来存储对象
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
(
)
)
当你说“这个类的所有实例”时,是你定义了这个方法的类,还是其他一些类?所有具有这个特性的类。这不是我想要的。我希望在创建该类的新实例时将该数组附加到。我不想每次都手动添加对象。@CriticalTheWizard这是您想要的吗?是的,我想是这样的。我不知道self的情况,所以这就是我可能遇到麻烦的原因。