如果符合条件,则迭代PHP对象以改变属性

时间:2018-02-23 16:35:03

标签: php

我有一个对象数组[Article(), Article(), Article()] 每个Article()都有足够的protected properties

我希望能够识别哪个属性是PersistentCollection的实例,以便在其上调用->initialize()方法。

enter image description here

最后,我想要我的3个对象Array()的新数组,仅当该属性是initialize()

的实例时才调用PersistentCollection方法

您是否知道动态执行此操作的有效方法? 或者它在性能方面是否过于宽泛,然后我应该在我知道它是PersistentCollection的字段上调用方法?

感谢。

1 个答案:

答案 0 :(得分:1)

假设$articles是您想要处理的初始数组,这样的事情应该可以解决这个问题

$closure = function() {
  foreach($this as $fieldValue) {
      if($fieldValue instanceof PersistentCollection) {
          $fieldValue->initialize();
      }
  }
};

foreach ($articles as $article) {
    $initCollections = Closure::bind($closure, $article, get_class($a));
    $initCollections();
}

$initCollections = Closure::bind($closure, $a, get_class($a));
$initCollections();

不确定性能,但看不出任何问题