Code Duplication    Length = 34-34 lines in 2 locations

lib/Doctrine/ORM/UnitOfWork.php 2 locations

@@ 2114-2147 (lines=34) @@
2111
     *
2112
     * @return void
2113
     */
2114
    private function cascadeRefresh($entity, array &$visited)
2115
    {
2116
        $class = $this->em->getClassMetadata(get_class($entity));
2117
2118
        $associationMappings = array_filter(
2119
            $class->associationMappings,
2120
            function ($assoc) { return $assoc['isCascadeRefresh']; }
2121
        );
2122
2123
        foreach ($associationMappings as $assoc) {
2124
            $relatedEntities = $class->reflFields[$assoc['fieldName']]->getValue($entity);
2125
2126
            switch (true) {
2127
                case ($relatedEntities instanceof PersistentCollection):
2128
                    // Unwrap so that foreach() does not initialize
2129
                    $relatedEntities = $relatedEntities->unwrap();
2130
                    // break; is commented intentionally!
2131
2132
                case ($relatedEntities instanceof Collection):
2133
                case (is_array($relatedEntities)):
2134
                    foreach ($relatedEntities as $relatedEntity) {
2135
                        $this->doRefresh($relatedEntity, $visited);
2136
                    }
2137
                    break;
2138
2139
                case ($relatedEntities !== null):
2140
                    $this->doRefresh($relatedEntities, $visited);
2141
                    break;
2142
2143
                default:
2144
                    // Do nothing
2145
            }
2146
        }
2147
    }
2148
2149
    /**
2150
     * Cascades a detach operation to associated entities.
@@ 2157-2190 (lines=34) @@
2154
     *
2155
     * @return void
2156
     */
2157
    private function cascadeDetach($entity, array &$visited)
2158
    {
2159
        $class = $this->em->getClassMetadata(get_class($entity));
2160
2161
        $associationMappings = array_filter(
2162
            $class->associationMappings,
2163
            function ($assoc) { return $assoc['isCascadeDetach']; }
2164
        );
2165
2166
        foreach ($associationMappings as $assoc) {
2167
            $relatedEntities = $class->reflFields[$assoc['fieldName']]->getValue($entity);
2168
2169
            switch (true) {
2170
                case ($relatedEntities instanceof PersistentCollection):
2171
                    // Unwrap so that foreach() does not initialize
2172
                    $relatedEntities = $relatedEntities->unwrap();
2173
                    // break; is commented intentionally!
2174
2175
                case ($relatedEntities instanceof Collection):
2176
                case (is_array($relatedEntities)):
2177
                    foreach ($relatedEntities as $relatedEntity) {
2178
                        $this->doDetach($relatedEntity, $visited);
2179
                    }
2180
                    break;
2181
2182
                case ($relatedEntities !== null):
2183
                    $this->doDetach($relatedEntities, $visited);
2184
                    break;
2185
2186
                default:
2187
                    // Do nothing
2188
            }
2189
        }
2190
    }
2191
2192
    /**
2193
     * Cascades a merge operation to associated entities.