Я думаю, вы должны сначала рассмотреть, что вы хотели бы сделать с объектами пользователя. Например, если вы хотите только создавать, обновлять и удалять пользовательские записи (CRUD), я могу представить этот тип API:
<?php
public function create (array $data = null)
{
$user = new User($data);
$this->_persist($user)
->_flush();
return $user;
}
public function update (User $user, array $data)
{
foreach ($data as $name => $value) {
$user->$name = $value;
}
$this->_flush();
return $user;
}
public function delete (User $user)
{
$this->_remove($user)
->_flush();
}
Я отделил методы от менеджера сущностей, вы можете создать что-то вроде ниже или вообще пропустить разделенные методы. С помощью этих методов вы можете выполнить дополнительные проверки (например, если вы хотите сохранить, может быть проверка, если объект уже сохранен).
protected function _persist ($obj)
{
$this->_em->persist($obj);
return $this;
}
protected function _detach ($obj)
{
$this->_em->detach($obj);
return $this;
}
protected function _remove ($obj)
{
$this->_em->remove($obj);
return $this;
}
protected function _flush ()
{
$this->_em->flush();
return $this;
}