2017-03-19 68 views
1

我有一个我想做的特征,所以我可以很容易地计算和检索该类的所有实例。 我知道我需要将它推到一个数组,但我不知道如何“存储”数组。我是否使用公共,私人,静态等?计数类别实例的特征

trait Countable 
{ 
    public $all = array(); 

    public function addToObjects() 
    { 
    //do stuff 
    $this->all[] = $this->somekindofproperty; 
    } 

} 

我希望能够像下面这样。

$c = new MyClass; 
$objects = $c->all(); 

几乎每个具有这种特征的类都应该有它自己的数组。

+0

? –

+0

所有具有特质的类。 – CriticalTheWizard

回答

1

这里我定义了一个名为countertrait,并将它用于存储对象的类。

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); 

OUTPUT:

Array 
(
    [0] => MyClass Object 
     (
     ) 

    [1] => MyClass Object 
     (
     ) 

    [2] => MyClass Object 
     (
     ) 

    [3] => MyClass Object 
     (
     ) 

) 
当你说“所有的类的实例”是它的类在女巫您定义的方法,或者是其他一些类太
+0

这不是我想要的。我想要在创建类的新实例时追加数组。我不想每次手动添加对象。 – CriticalTheWizard

+0

@CriticalTheWizard你想要这个吗? –

+0

是的,我认为这样做。我不知道“自我”,所以我可能会遇到麻烦。 – CriticalTheWizard