Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.
Common duplication problems, and corresponding solutions are:
| 1 | <?php  | 
            ||
| 33 | class ContentPushController extends Controller  | 
            ||
| 
                                                                                                    
                        
                         | 
                |||
| 34 | { | 
            ||
| 35 | /**  | 
            ||
| 36 | * Receives HTTP Push Request's payload.  | 
            ||
| 37 | *  | 
            ||
| 38 | * @ApiDoc(  | 
            ||
| 39 | * resource=true,  | 
            ||
| 40 | * description="Adds a new content from HTTP Push",  | 
            ||
| 41 |      *     statusCodes={ | 
            ||
| 42 | * 201="Returned on success"  | 
            ||
| 43 | * }  | 
            ||
| 44 | * )  | 
            ||
| 45 |      * @Route("/api/{version}/content/push", methods={"POST"}, options={"expose"=true}, defaults={"version"="v1"}, name="swp_api_content_push") | 
            ||
| 46 | */  | 
            ||
| 47 | public function pushContentAction(Request $request)  | 
            ||
| 60 | |||
| 61 | /**  | 
            ||
| 62 | * Receives HTTP Push Request's assets payload which is then processed and stored.  | 
            ||
| 63 | *  | 
            ||
| 64 | * @ApiDoc(  | 
            ||
| 65 | * resource=true,  | 
            ||
| 66 | 12 | * description="Adds new assets from HTTP Push",  | 
            |
| 67 | 12 |      *     statusCodes={ | 
            |
| 68 | 11 | * 201="Returned on successful post.",  | 
            |
| 69 | 11 | * 500="Returned on invalid file.",  | 
            |
| 70 | * 200="Returned on form errors"  | 
            ||
| 71 | 11 | * },  | 
            |
| 72 | * input="SWP\Bundle\ContentBundle\Form\Type\MediaFileType"  | 
            ||
| 73 | * )  | 
            ||
| 74 |      * @Route("/api/{version}/assets/push", methods={"POST"}, options={"expose"=true}, defaults={"version"="v1"}, name="swp_api_assets_push") | 
            ||
| 75 | */  | 
            ||
| 76 | public function pushAssetsAction(Request $request)  | 
            ||
| 111 | |||
| 112 | /**  | 
            ||
| 113 | * Checks if media exists in storage.  | 
            ||
| 114 | *  | 
            ||
| 115 | * @ApiDoc(  | 
            ||
| 116 | * resource=true,  | 
            ||
| 117 | * description="Gets a single media file",  | 
            ||
| 118 |      *     statusCodes={ | 
            ||
| 119 | * 404="Returned when file doesn't exist.",  | 
            ||
| 120 | * 200="Returned on form errors"  | 
            ||
| 121 | * }  | 
            ||
| 122 | * )  | 
            ||
| 123 |      * @Route("/api/{version}/assets/push/{mediaId}.{extension}", methods={"GET"}, options={"expose"=true}, defaults={"version"="v1"}, requirements={"mediaId"=".+"}, name="swp_api_assets_get") | 
            ||
| 124 |      * @Route("/api/{version}/assets/get/{mediaId}.{extension}", methods={"GET"}, options={"expose"=true}, defaults={"version"="v1"}, requirements={"mediaId"=".+"}, name="swp_api_assets_get_1") | 
            ||
| 125 | */  | 
            ||
| 126 | public function getAssetsAction(string $mediaId, string $extension)  | 
            ||
| 145 | |||
| 146 | View Code Duplication | protected function findExistingPackage(PackageInterface $package)  | 
            |
| 158 | |||
| 159 | protected function getPackageRepository()  | 
            ||
| 163 | }  | 
            ||
| 164 | 
This class, trait or interface has been deprecated. The supplier of the file has supplied an explanatory message.
The explanatory message should give you some clue as to whether and when the type will be removed from the class and what other constant to use instead.