Skip to content

Commit 28da541

Browse files
committed
Fix deprecation
1 parent 72bf29e commit 28da541

File tree

3 files changed

+53
-1
lines changed

3 files changed

+53
-1
lines changed

config/packages/doctrine.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@
2020
PuzzlersGroupDoctrineType::NAME => PuzzlersGroupDoctrineType::class,
2121
SellSwapListSettingsDoctrineType::NAME => SellSwapListSettingsDoctrineType::class,
2222
],
23-
'schema_filter' => '~^(?!tmp_|custom_)~',
23+
// Note: schema_filter removed - using custom RegexSchemaAssetFilter service instead
24+
// to avoid DBAL deprecation warning (see src/Doctrine/RegexSchemaAssetFilter.php)
2425
'schema_manager_factory' => CustomIndexFilteringSchemaManagerFactory::class,
2526
],
2627
'orm' => [

config/services.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
use Sentry\Monolog\BreadcrumbHandler as SentryBreadcrumbHandler;
1212
use Sentry\Monolog\Handler as SentryMonologHandler;
1313
use Sentry\State\HubInterface;
14+
use SpeedPuzzling\Web\Doctrine\RegexSchemaAssetFilter;
1415
use SpeedPuzzling\Web\Services\Doctrine\FixDoctrineMigrationTableSchema;
1516
use SpeedPuzzling\Web\Services\SentryTracesSampler;
1617
use SpeedPuzzling\Web\Services\SentryTransactionNameEnhancer;
@@ -87,6 +88,12 @@
8788
->arg('$dependencyFactory', service('doctrine.migrations.dependency_factory'))
8889
->tag('doctrine.event_listener', ['event' => 'postGenerateSchema']);
8990

91+
// Custom RegexSchemaAssetFilter to avoid DBAL deprecation warning
92+
// Replaces the built-in schema_filter config with same regex pattern
93+
$services->set(RegexSchemaAssetFilter::class)
94+
->args(['~^(?!tmp_|custom_)~'])
95+
->tag('doctrine.dbal.schema_filter');
96+
9097
$services->set(S3Client::class)
9198
->args([
9299
'$configuration' => [
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace SpeedPuzzling\Web\Doctrine;
6+
7+
use Doctrine\DBAL\Schema\AbstractAsset;
8+
use Doctrine\DBAL\Schema\NamedObject;
9+
use Doctrine\DBAL\Schema\OptionallyNamedObject;
10+
11+
use function preg_match;
12+
13+
/**
14+
* Custom implementation of RegexSchemaAssetFilter that uses the new DBAL API
15+
* instead of the deprecated getName() method.
16+
*
17+
* This replaces Doctrine\Bundle\DoctrineBundle\Dbal\RegexSchemaAssetFilter
18+
* to avoid deprecation warnings.
19+
*/
20+
final readonly class RegexSchemaAssetFilter
21+
{
22+
public function __construct(
23+
private string $filterExpression,
24+
) {
25+
}
26+
27+
/** @phpstan-ignore missingType.generics, parameter.internalClass */
28+
public function __invoke(string|AbstractAsset $assetName): bool
29+
{
30+
if ($assetName instanceof AbstractAsset) { // @phpstan-ignore instanceof.internalClass
31+
if ($assetName instanceof NamedObject) {
32+
$assetName = $assetName->getObjectName()->toString();
33+
} elseif ($assetName instanceof OptionallyNamedObject) {
34+
$name = $assetName->getObjectName();
35+
$assetName = $name?->toString() ?? '';
36+
} else {
37+
// Fallback for any other case - use deprecated method as last resort
38+
$assetName = $assetName->getName(); // @phpstan-ignore method.internalClass
39+
}
40+
}
41+
42+
return (bool) preg_match($this->filterExpression, $assetName);
43+
}
44+
}

0 commit comments

Comments
 (0)