如何从对象数组中删除私有 属性?

How can I remove a private property from an array of object?

$array = $this->em->getRepository($entity)->filter($id);

根据学说,我正在创建一个数组:

array:24 [▼
  0 => Members^ {#543 ▼
    -id: 1
    -username: "lio"
    -email: "info@somepage.com"
    -isActive: true
    -name: "Lio"
    -projects: PersistentCollection^ {#590 ▶}
    -pages: PersistentCollection^ {#615 ▶}
  }
  1 => Members^ {#135029 ▶}
  2 => Members^ {#125937 ▶}
  3 => Members^ {#1807 ▶}
  4 => Members^ {#135075 ▶}
  5 => Members^ {#135086 ▶}

我尝试从此数组中删除对象项目:

 foreach ($array as $value) {
      dump($value->projects);
    }

我收到该对象是私有的错误消息。

我找到了这个 post,但是上面写着,我需要在 class.

里面写一个函数

Removing private properties of object

我的问题是,是否可以在 class 之外删除它?因为当我在 class 中删除它时,它总是被删除,我只想在特定情况下删除它。

你应该使用 getter 和 setter

foreach ($array as $value) {
      dump($value->getProjects());
}

这是一个 Member 对象数组。对象的私有属性只能通过其方法访问。您需要找到声明 class Member 的文件。然后添加一个public class 方法来做unset。例如,

class Member {

  // ...
  public function unsetProjects()
  {
    unset($this->projects);
  }

}

那么你应该可以这样做:

foreach ($array as $value) {
  $value->unsetProjects();
}