-
Notifications
You must be signed in to change notification settings - Fork 14
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
BREAKING native PHP attributes replace annotations
All previously existing annotations are now PHP native `Attribute`. This is a major breaking change and all annotations must be migrated to the new attributes. Notable changes: - `API\Argument` is now declared on the parameter itself - `API\Filter` is used directly, possibly multiple times, without wrapping in `API\Filters` - `API\Filters` is not necessary anymore and was dropped - `API\Sorting` requires a single class name, but can be used multiple times # Partially automated migration The following is a configuration file for [Rector](https://getrector.com) that will migrate both Doctrine annotations and also GraphQL Doctrine annotations to attributes. The migration for GraphQL Doctrine is imperfect, so `Sorting` and `Argument` will have to be adjusted manually afterward. ```php <?php declare(strict_types=1); use Rector\Config\RectorConfig; use Rector\Php80\Rector\Class_\AnnotationToAttributeRector; use Rector\Php80\Rector\Property\NestedAnnotationToAttributeRector; use Rector\Php80\ValueObject\AnnotationPropertyToAttributeClass; use Rector\Php80\ValueObject\AnnotationToAttribute; use Rector\Php80\ValueObject\NestedAnnotationToAttribute; return static function (RectorConfig $rectorConfig): void { $rectorConfig->parallel(); $rectorConfig->sets([ \Rector\Doctrine\Set\DoctrineSetList::ANNOTATIONS_TO_ATTRIBUTES, ]); $rectorConfig->ruleWithConfiguration(NestedAnnotationToAttributeRector::class, [ new NestedAnnotationToAttribute('GraphQL\\Doctrine\\Annotation\\Filters', [new AnnotationPropertyToAttributeClass('GraphQL\\Doctrine\\Attribute\\Filter')], \true), new NestedAnnotationToAttribute('GraphQL\\Doctrine\\Annotation\\Sorting', [new AnnotationPropertyToAttributeClass('GraphQL\\Doctrine\\Attribute\\Sorting', 'classes', \true)]), new NestedAnnotationToAttribute('API\Filters', [new AnnotationPropertyToAttributeClass('GraphQL\\Doctrine\\Attribute\\Filter')], \true), new NestedAnnotationToAttribute('API\Sorting', [new AnnotationPropertyToAttributeClass('GraphQL\\Doctrine\\Attribute\\Sorting', 'classes', \true)]), ]); $rectorConfig->ruleWithConfiguration(AnnotationToAttributeRector::class, [ new AnnotationToAttribute('GraphQL\\Doctrine\\Annotation\\Argument', 'GraphQL\\Doctrine\\Attribute\\Argument'), new AnnotationToAttribute('GraphQL\\Doctrine\\Annotation\\Exclude', 'GraphQL\\Doctrine\\Attribute\\Exclude'), new AnnotationToAttribute('GraphQL\\Doctrine\\Annotation\\Field', 'GraphQL\\Doctrine\\Attribute\\Field'), new AnnotationToAttribute('GraphQL\\Doctrine\\Annotation\\FilterGroupCondition', 'GraphQL\\Doctrine\\Attribute\\FilterGroupCondition'), new AnnotationToAttribute('GraphQL\\Doctrine\\Annotation\\Filter', 'GraphQL\\Doctrine\\Attribute\\Filter'), new AnnotationToAttribute('GraphQL\\Doctrine\\Annotation\\Input', 'GraphQL\\Doctrine\\Attribute\\Input'), new AnnotationToAttribute('API\Argument', 'GraphQL\\Doctrine\\Attribute\\Argument'), new AnnotationToAttribute('API\Exclude', 'GraphQL\\Doctrine\\Attribute\\Exclude'), new AnnotationToAttribute('API\Field', 'GraphQL\\Doctrine\\Attribute\\Field'), new AnnotationToAttribute('API\FilterGroupCondition', 'GraphQL\\Doctrine\\Attribute\\FilterGroupCondition'), new AnnotationToAttribute('API\Filter', 'GraphQL\\Doctrine\\Attribute\\Filter'), new AnnotationToAttribute('API\Input', 'GraphQL\\Doctrine\\Attribute\\Input'), ]); }; ``` Closes #63
- Loading branch information
Showing
65 changed files
with
658 additions
and
893 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.