Doctrine\OXM\UnitOfWork::doRemove PHP Метод

doRemove() приватный Метод

private doRemove ( $xmlEntity, array &$visited )
$visited array
    private function doRemove($xmlEntity, array &$visited)
    {
        $oid = spl_object_hash($xmlEntity);
        if (isset($visited[$oid])) {
            return;
            // Prevent infinite recursion
        }
        $visited[$oid] = $xmlEntity;
        // mark visited
        $class = $this->xem->getClassMetadata(get_class($xmlEntity));
        $entityState = $this->getXmlEntityState($xmlEntity);
        switch ($entityState) {
            case self::STATE_NEW:
            case self::STATE_REMOVED:
                // nothing to do
                break;
            case self::STATE_MANAGED:
                if (isset($class->lifecycleCallbacks[Events::preRemove])) {
                    $class->invokeLifecycleCallbacks(Events::preRemove, $xmlEntity);
                }
                if ($this->evm->hasListeners(Events::preRemove)) {
                    $this->evm->dispatchEvent(Events::preRemove, new Event\LifecycleEventArgs($xmlEntity, $this->xem));
                }
                $this->scheduleForDelete($xmlEntity);
                break;
            case self::STATE_DETACHED:
                throw new InvalidArgumentException("A detached xml entity can not be removed.");
            default:
                throw new UnexpectedValueException("Unexpected xml entity state: {$entityState}.");
        }
    }