diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index e59bb7e..23d8935 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -8,10 +8,10 @@ jobs: strategy: matrix: - php-versions: ['8.3'] + php-versions: ['8.3', '8.4'] name: PHP ${{ matrix.php-versions }} steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v7 - uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php-versions }} @@ -19,7 +19,7 @@ jobs: id: composer-cache run: | echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT - - uses: actions/cache@v4 + - uses: actions/cache@v6 with: path: ${{ steps.composer-cache.outputs.dir }} key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} diff --git a/composer.json b/composer.json index d0b40e7..cc9ff87 100644 --- a/composer.json +++ b/composer.json @@ -5,31 +5,32 @@ "minimum-stability": "stable", "require": { "php": "^8.3", - "hostnet/entity-tracker-component": "^2.3.0", + "hostnet/entity-tracker-component": "^3.0.0", "psr/log": "^1.1.0||^2.0.0||^3.0.0", - "symfony/config": "^5.4||^6.0", - "symfony/dependency-injection": "^5.4||^6.0", - "symfony/http-kernel": "^5.4||^6.0", - "symfony/yaml": "^5.4||^6.0" + "symfony/config": "^6.4", + "symfony/dependency-injection": "^6.4", + "symfony/http-kernel": "^6.4", + "symfony/yaml": "^6.4" }, "require-dev": { - "hostnet/entity-blamable-component": "^1.1.0", + "hostnet/entity-blamable-component": "^2.0.1", "hostnet/phpcs-tool": "^9.1.0", "phpspec/prophecy": "^1.19", "phpspec/prophecy-phpunit": "^2.2", "phpunit/phpunit": "^9.5.6", - "symfony/framework-bundle": "^5.4||^6.0", - "symfony/security-bundle": "^5.4||^6.0" + "symfony/framework-bundle": "^6.4", + "symfony/security-bundle": "^6.4" }, "suggest": { - "hostnet/entity-blamable-component": "Provides the @Blamable annotation/attribute and listeners", - "hostnet/entity-mutation-component": "Provides the @Mutation annotation/attribute and listeners", - "hostnet/entity-revision-component": "Provides the @Revision annotation/attribute and listeners" + "hostnet/entity-blamable-component": "Provides the #[Blamable] attribute and listeners", + "hostnet/entity-mutation-component": "Provides the #[Mutation] attribute and listeners", + "hostnet/entity-revision-component": "Provides the #[Revision] attribute and listeners" }, "conflict": { - "hostnet/entity-blamable-component": "<1.1.0", - "hostnet/entity-mutation-component": "<1.1.0", - "hostnet/entity-revision-component": "<1.2.0" + "hostnet/entity-blamable-component": "<2.0.1", + "hostnet/entity-mutation-component": "<2.0.0", + "hostnet/entity-revision-component": "<2.0.0", + "symfony/console": ">=8.0" }, "autoload": { "psr-4": { diff --git a/src/DependencyInjection/Configuration.php b/src/DependencyInjection/Configuration.php index da1424d..16fa292 100644 --- a/src/DependencyInjection/Configuration.php +++ b/src/DependencyInjection/Configuration.php @@ -22,6 +22,7 @@ class Configuration implements ConfigurationInterface private const string CONFIG_ROOT = 'hostnet_entity_tracker'; + #[\Override] public function getConfigTreeBuilder(): TreeBuilder { $tree_builder = new TreeBuilder(self::CONFIG_ROOT); diff --git a/src/DependencyInjection/HostnetEntityTrackerExtension.php b/src/DependencyInjection/HostnetEntityTrackerExtension.php index e42b3df..2a8dd55 100644 --- a/src/DependencyInjection/HostnetEntityTrackerExtension.php +++ b/src/DependencyInjection/HostnetEntityTrackerExtension.php @@ -14,10 +14,11 @@ class HostnetEntityTrackerExtension extends Extension { - private const string BLAMABLE = 'Hostnet\Component\EntityBlamable\Blamable'; - private const string MUTATION = 'Hostnet\Component\EntityMutation\Mutation'; - private const string REVISION = 'Hostnet\Component\EntityRevision\Revision'; + private const string BLAMABLE = 'Hostnet\Component\EntityBlamable\Attributes\Blamable'; + private const string MUTATION = 'Hostnet\Component\EntityMutation\Attributes\Mutation'; + private const string REVISION = 'Hostnet\Component\EntityRevision\Attributes\Revision'; + #[\Override] public function load(array $configs, ContainerBuilder $container): void { $loader = new YamlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config')); @@ -78,9 +79,6 @@ public function load(array $configs, ContainerBuilder $container): void } /** - * @param string $annotation_class - * @param string $config_name - * * @throws \RuntimeException */ protected function validateComponent(string $annotation_class, string $config_name): void @@ -97,9 +95,6 @@ protected function validateComponent(string $annotation_class, string $config_na } /** - * @param string $annotation_class - * @param string $config_name - * * @throws \RuntimeException */ protected function validateClass(string $annotation_class, string $config_name): void diff --git a/src/Resources/config/blamable.yaml b/src/Resources/config/blamable.yaml index aa7a494..99296f5 100644 --- a/src/Resources/config/blamable.yaml +++ b/src/Resources/config/blamable.yaml @@ -2,7 +2,7 @@ services: entity_tracker.resolver.blamable: class: Hostnet\Component\EntityBlamable\Resolver\BlamableResolver arguments: - - "@entity_tracker.provider.annotation_metadata" + - "@entity_tracker.provider.entity_metadata" entity_tracker.listener.blamable: class: Hostnet\Component\EntityBlamable\Listener\BlamableListener @@ -11,6 +11,6 @@ services: - "" # provider id, (configurable) - "" # cacheadapter id (configurable, entity_tracker.cache by default) tags: - - { name: doctrine.event_listener, event: entityChanged, priority: 32, method: onEntityChanged } + - { name: doctrine.event_listener, event: entityChanged, priority: 32 } diff --git a/src/Resources/config/mutation.yaml b/src/Resources/config/mutation.yaml index cbe462f..0d19226 100644 --- a/src/Resources/config/mutation.yaml +++ b/src/Resources/config/mutation.yaml @@ -2,7 +2,7 @@ services: entity_tracker.resolver.mutation: class: Hostnet\Component\EntityMutation\Resolver\MutationResolver arguments: - - "@entity_tracker.provider.annotation_metadata" + - "@entity_tracker.provider.entity_metadata" entity_tracker.listener.mutation: class: Hostnet\Component\EntityMutation\Listener\MutationListener diff --git a/src/Resources/config/revision.yaml b/src/Resources/config/revision.yaml index ec3dfa9..7a63e0f 100644 --- a/src/Resources/config/revision.yaml +++ b/src/Resources/config/revision.yaml @@ -2,7 +2,7 @@ services: entity_tracker.resolver.revision: class: Hostnet\Component\EntityRevision\Resolver\RevisionResolver arguments: - - "@entity_tracker.provider.annotation_metadata" + - "@entity_tracker.provider.entity_metadata" entity_tracker.listener.revision: class: Hostnet\Component\EntityRevision\Listener\RevisionListener diff --git a/src/Resources/config/services.yaml b/src/Resources/config/services.yaml index 2ca9432..c28f62f 100644 --- a/src/Resources/config/services.yaml +++ b/src/Resources/config/services.yaml @@ -2,24 +2,20 @@ services: entity_tracker.cache: class: Symfony\Component\Cache\Adapter\ArrayAdapter - entity_tracker.provider.annotation_metadata: - class: Hostnet\Component\EntityTracker\Provider\EntityAnnotationMetadataProvider - arguments: - - "@annotation_reader" + entity_tracker.provider.entity_metadata: + class: Hostnet\Component\EntityTracker\Provider\EntityMetadataProvider entity_tracker.provider.mutation_metadata: class: Hostnet\Component\EntityTracker\Provider\EntityMutationMetadataProvider arguments: - - "@annotation_reader" - "@?logger" entity_tracker.listener.entity_changed: class: Hostnet\Component\EntityTracker\Listener\EntityChangedListener arguments: - - "@entity_tracker.provider.annotation_metadata" + - "@entity_tracker.provider.entity_metadata" - "@entity_tracker.provider.mutation_metadata" - "@?logger" - "" # cacheadapter id (configurable, entity_tracker.cache by default) tags: - { name: doctrine.event_listener, event: preFlush, priority: 15 } - - { name: doctrine.event_listener, event: prePersist, priority: 15 } diff --git a/src/Services/Blamable/DefaultBlamableProvider.php b/src/Services/Blamable/DefaultBlamableProvider.php index 36a162d..8c3e3b0 100644 --- a/src/Services/Blamable/DefaultBlamableProvider.php +++ b/src/Services/Blamable/DefaultBlamableProvider.php @@ -15,22 +15,13 @@ */ class DefaultBlamableProvider implements BlamableProviderInterface { - /** - * @var TokenStorageInterface - */ - private $token_storage; - - /** - * @var string - */ - private $username; - - public function __construct(TokenStorageInterface $token_storage, string $username) - { - $this->token_storage = $token_storage; - $this->username = $username; + public function __construct( + private TokenStorageInterface $token_storage, + private string $username + ) { } + #[\Override] public function getUpdatedBy(): string { if (($token = $this->token_storage->getToken()) instanceof TokenInterface) { @@ -40,6 +31,7 @@ public function getUpdatedBy(): string return $this->username; } + #[\Override] public function getChangedAt(): \DateTime { return new \DateTime(); diff --git a/tests/DependencyInjection/HostnetEntityTrackerExtensionTest.php b/tests/DependencyInjection/HostnetEntityTrackerExtensionTest.php index f1d9113..19ee10d 100644 --- a/tests/DependencyInjection/HostnetEntityTrackerExtensionTest.php +++ b/tests/DependencyInjection/HostnetEntityTrackerExtensionTest.php @@ -6,7 +6,8 @@ namespace Hostnet\Bundle\EntityTrackerBundle\DependencyInjection; -use Hostnet\Component\EntityBlamable\Blamable; +use Hostnet\Component\EntityBlamable\Attributes\Blamable; +use Hostnet\Component\EntityMutation\Attributes\Mutation; use PHPUnit\Framework\TestCase; use Symfony\Component\DependencyInjection\ContainerBuilder; @@ -15,19 +16,16 @@ */ class HostnetEntityTrackerExtensionTest extends TestCase { - private $container; - - /** - * @var HostnetEntityTrackerExtension - */ - private $extension; + private ContainerBuilder $container; + private HostnetEntityTrackerExtension $extension; + #[\Override] public function setUp(): void { $this->container = new ContainerBuilder(); $this->extension = $this->getMockBuilder(HostnetEntityTrackerExtension::class) - ->setMethods(['validateComponent', 'validateClass']) + ->onlyMethods(['validateComponent', 'validateClass']) ->getMock(); } @@ -60,7 +58,7 @@ public function testLoadMutation(): void $this->extension->expects(self::once()) ->method('validateComponent') - ->with('Hostnet\Component\EntityMutation\Mutation', 'mutation'); + ->with(Mutation::class, 'mutation'); $this->extension->load($configs, $this->container); } diff --git a/tests/Functional/Fixtures/TestKernel.php b/tests/Functional/Fixtures/TestKernel.php index e1fc0a1..8db63c2 100644 --- a/tests/Functional/Fixtures/TestKernel.php +++ b/tests/Functional/Fixtures/TestKernel.php @@ -11,9 +11,7 @@ class TestKernel extends Kernel { - /** - * {@inheritdoc} - */ + #[\Override] public function registerBundles(): array { return [ @@ -22,16 +20,19 @@ public function registerBundles(): array ]; } + #[\Override] public function registerContainerConfiguration(LoaderInterface $loader): void { $loader->load(__DIR__ . '/config/config.yaml'); } + #[\Override] public function getCacheDir(): string { return __DIR__ . '/../../../var/cache/' . $this->getEnvironment(); } + #[\Override] public function getLogDir(): string { return __DIR__ . '/../../../var/logs'; diff --git a/tests/Functional/FunctionalTest.php b/tests/Functional/FunctionalTest.php index fae4d53..4c95945 100644 --- a/tests/Functional/FunctionalTest.php +++ b/tests/Functional/FunctionalTest.php @@ -14,11 +14,13 @@ */ class FunctionalTest extends KernelTestCase { + #[\Override] protected function setUp(): void { static::bootKernel(); } + #[\Override] protected static function getKernelClass(): string { return TestKernel::class; diff --git a/tests/Services/Blamable/DefaultBlamableProviderTest.php b/tests/Services/Blamable/DefaultBlamableProviderTest.php index f0e4580..9cf39ae 100644 --- a/tests/Services/Blamable/DefaultBlamableProviderTest.php +++ b/tests/Services/Blamable/DefaultBlamableProviderTest.php @@ -19,8 +19,9 @@ class DefaultBlamableProviderTest extends TestCase { use ProphecyTrait; - private $token_storage; + private TokenStorageInterface $token_storage; + #[\Override] protected function setUp(): void { $this->token_storage = $this->createMock(TokenStorageInterface::class);