diff --git a/UPGRADING.md b/UPGRADING.md index 77ddf9f..6dc5ee6 100644 --- a/UPGRADING.md +++ b/UPGRADING.md @@ -1,5 +1,9 @@ # Upgrade notes for `webfactory/visibility-filter-bundle` +## 2.0.0 + +* Annotation support has been dropped. Use the Atrtibute for configuration. + ## 1.5.0 * The `\Webfactory\VisibilityFilterBundle\Annotation\VisibilityColumn` annotation has been deprecated. Use the diff --git a/composer.json b/composer.json index 7060155..b43cf5a 100644 --- a/composer.json +++ b/composer.json @@ -14,14 +14,13 @@ }, "require": { "php": "^8.1", - "doctrine/annotations": "^1.12", "doctrine/doctrine-bundle": "^1.12.13|^2.0", "doctrine/orm": "^2.7.2", - "symfony/config": "^5.4|^6.4", - "symfony/dependency-injection": "^5.4|^6.4", + "symfony/config": "^5.4|^6.4|^7.0", + "symfony/dependency-injection": "^5.4|^6.4|^7.0", "symfony/deprecation-contracts": "^3.6.0", - "symfony/event-dispatcher": "^5.4|^6.4", - "symfony/http-kernel": "^5.4|^6.4" + "symfony/event-dispatcher": "^5.4|^6.4|^7.0", + "symfony/http-kernel": "^5.4|^6.4|^7.0" }, "config": { "sort-packages": true @@ -29,7 +28,7 @@ "require-dev": { "dama/doctrine-test-bundle": "^6.5", "phpunit/phpunit": "^8.5", - "symfony/framework-bundle": "^5.4|^6.4", - "symfony/yaml": "^5.4|^6.4" + "symfony/framework-bundle": "^5.4|^6.4|^7.0", + "symfony/yaml": "^5.4|^6.4|^7.0" } } diff --git a/src/Annotation/VisibilityColumn.php b/src/Annotation/VisibilityColumn.php deleted file mode 100644 index 4c19f7c..0000000 --- a/src/Annotation/VisibilityColumn.php +++ /dev/null @@ -1,31 +0,0 @@ -annotationReader = $annotationReader; - } - public function getVisibilityColumnName(ClassMetadata $classMetadata): ?string { $property = $this->getVisibilityProperty($classMetadata); @@ -40,19 +29,7 @@ private function getVisibilityProperty(ClassMetadata $classMetadata): ?Reflectio $visibilityProperty = null; foreach ($classMetadata->getReflectionClass()->getProperties() as $property) { - if (\PHP_MAJOR_VERSION >= 8) { - if (0 < \count($property->getAttributes(\Webfactory\VisibilityFilterBundle\Attribute\VisibilityColumn::class))) { - $visibilityProperty = $property; - } - } - - if (null !== $this->annotationReader->getPropertyAnnotation($property, VisibilityColumn::class)) { - trigger_deprecation( - 'webfactory/visibility-filter-bundle', - '1.5.0', - 'Configuring webfactory/visibility-filter-bundle with annotations is deprecated, use attributes instead.' - ); - + if (0 < \count($property->getAttributes(VisibilityColumn::class))) { if (null !== $visibilityProperty) { throw new RuntimeException('More than 1 visibility column configured for '.$classMetadata->getName().'. You must only configure 1 visibility column per entity.'); } diff --git a/tests/Fixtures/EntityWithFaultyVisibilityColumn.php b/tests/Fixtures/EntityWithFaultyVisibilityColumn.php index 2041e0e..713a173 100644 --- a/tests/Fixtures/EntityWithFaultyVisibilityColumn.php +++ b/tests/Fixtures/EntityWithFaultyVisibilityColumn.php @@ -3,27 +3,16 @@ namespace Webfactory\VisibilityFilterBundle\Tests\Fixtures; use Doctrine\ORM\Mapping as ORM; -use Webfactory\VisibilityFilterBundle\Annotation\VisibilityColumn; +use Webfactory\VisibilityFilterBundle\Attribute\VisibilityColumn; -/** - * @ORM\Entity() - */ +#[ORM\Entity] class EntityWithFaultyVisibilityColumn { - /** - * @VisibilityColumn() - * - * (No Doctrine Column Annotation) - * - * @var string - */ - public $visibilityColumn; + // (No Doctrine Column Annotation) + #[VisibilityColumn] + public string $visibilityColumn; - /** - * @ORM\Id() - * @ORM\Column() - * - * @var int - */ - public $id; + #[ORM\Id] + #[ORM\Column] + public int $id; } diff --git a/tests/Fixtures/EntityWithManyToManyRelationship.php b/tests/Fixtures/EntityWithManyToManyRelationship.php index d9707d1..b402242 100644 --- a/tests/Fixtures/EntityWithManyToManyRelationship.php +++ b/tests/Fixtures/EntityWithManyToManyRelationship.php @@ -5,31 +5,19 @@ use Doctrine\Common\Collections\Collection; use Doctrine\ORM\Mapping as ORM; -/** - * @ORM\Entity() - */ +#[ORM\Entity] class EntityWithManyToManyRelationship { - /** - * Using many to many relationship to avoid the need of an inversed column in the target entity. - * - * @ORM\ManyToMany(targetEntity="EntityWithProperVisibilityColumn") - * @ORM\JoinTable(name="jointable", - * joinColumns={@ORM\JoinColumn(name="this", referencedColumnName="id")}, - * inverseJoinColumns={@ORM\JoinColumn(name="that", referencedColumnName="id")} - * ) - * - * @var Collection&array - */ - public $relationship; + // Using many to many relationship to avoid the need of an inversed column in the target entity. + #[ORM\ManyToMany(targetEntity: EntityWithProperVisibilityColumn::class)] + #[ORM\JoinTable(name: 'jointable')] + #[ORM\JoinColumn(name: 'this', referencedColumnName: 'id')] + #[ORM\InverseJoinColumn(name: 'that', referencedColumnName: 'id')] + public array|Collection $relationship; - /** - * @ORM\Id() - * @ORM\Column() - * - * @var int - */ - public $id; + #[ORM\Id] + #[ORM\Column] + public int $id; public function __construct(int $id) { diff --git a/tests/Fixtures/EntityWithNoVisibilityColumn.php b/tests/Fixtures/EntityWithNoVisibilityColumn.php index a8fd1b4..3217b3b 100644 --- a/tests/Fixtures/EntityWithNoVisibilityColumn.php +++ b/tests/Fixtures/EntityWithNoVisibilityColumn.php @@ -4,16 +4,15 @@ use Doctrine\ORM\Mapping as ORM; -/** - * @ORM\Entity() - */ +#[ORM\Entity] class EntityWithNoVisibilityColumn { - /** - * @ORM\Id() - * @ORM\Column() - * - * @var int - */ - public $id; + #[ORM\Id] + #[ORM\Column(type: 'integer')] + public int $id; + + public function __construct(int $id) + { + $this->id = $id; + } } diff --git a/tests/Fixtures/EntityWithOneToOneRelationship.php b/tests/Fixtures/EntityWithOneToOneRelationship.php index 7a0cd66..ba3dbcd 100644 --- a/tests/Fixtures/EntityWithOneToOneRelationship.php +++ b/tests/Fixtures/EntityWithOneToOneRelationship.php @@ -4,25 +4,16 @@ use Doctrine\ORM\Mapping as ORM; -/** - * @ORM\Entity() - */ +#[ORM\Entity] class EntityWithOneToOneRelationship { - /** - * @ORM\OneToOne(targetEntity="EntityWithProperVisibilityColumn", fetch="EAGER") fetch="EAGER" prevents a proxy object being put in here, so this will be null when the related entity is not found - * - * @var EntityWithProperVisibilityColumn - */ - public $relationship; + // fetch="EAGER" prevents a proxy object being put in here, so this will be null when the related entity is not found + #[ORM\OneToOne(targetEntity: EntityWithProperVisibilityColumn::class, fetch: 'EAGER')] + public ?EntityWithProperVisibilityColumn $relationship = null; - /** - * @ORM\Id() - * @ORM\Column() - * - * @var int - */ - public $id; + #[ORM\Id] + #[ORM\Column] + public int $id; public function __construct(int $id) { diff --git a/tests/Fixtures/EntityWithProperVisibilityColumn.php b/tests/Fixtures/EntityWithProperVisibilityColumn.php index 8abe3f8..a4c9692 100644 --- a/tests/Fixtures/EntityWithProperVisibilityColumn.php +++ b/tests/Fixtures/EntityWithProperVisibilityColumn.php @@ -3,29 +3,18 @@ namespace Webfactory\VisibilityFilterBundle\Tests\Fixtures; use Doctrine\ORM\Mapping as ORM; -use Webfactory\VisibilityFilterBundle\Annotation\VisibilityColumn; +use Webfactory\VisibilityFilterBundle\Attribute\VisibilityColumn; -/** - * @ORM\Entity() - */ +#[ORM\Entity] class EntityWithProperVisibilityColumn { - /** - * @VisibilityColumn() - * - * @ORM\Column(type="string") - * - * @var string - */ - public $visibilityColumn; + #[ORM\Column(type: 'string')] + #[VisibilityColumn] + public string $visibilityColumn; - /** - * @ORM\Id() - * @ORM\Column() - * - * @var int - */ - public $id; + #[ORM\Id] + #[ORM\Column(type: 'integer')] + public int $id; public function __construct(int $id, string $visibilityColumn) { diff --git a/tests/Fixtures/Kernel/config.yml b/tests/Fixtures/Kernel/config.yml index 0b22328..8421580 100644 --- a/tests/Fixtures/Kernel/config.yml +++ b/tests/Fixtures/Kernel/config.yml @@ -5,7 +5,7 @@ doctrine: naming_strategy: doctrine.orm.naming_strategy.underscore mappings: Test: - type: annotation + type: attribute dir: '%kernel.project_dir%' prefix: 'Webfactory\VisibilityFilterBundle\Tests\Fixtures' auto_generate_proxy_classes: true