Skip to content
This repository was archived by the owner on Dec 3, 2023. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions packages/config-transformer/src/ConfigLoader.php
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,10 @@
final class ConfigLoader
{
/**
* @see https://regex101.com/r/4Uanps/2
* @see https://regex101.com/r/4Uanps/4
* @var string
*/
private const PHP_CONST_REGEX = '#!php/const[:\s]\s*(.*)(\s*)#';
private const PHP_CONST_REGEX = '#!php/const:?\s*([a-zA-Z0-9_\\\\]+(::[a-zA-Z0-9_]+)?)+(:\s*(.*))?#';

/**
* @see https://regex101.com/r/spi4ir/1
Expand Down Expand Up @@ -68,7 +68,7 @@ public function createAndLoadContainerBuilderFromFileInfo(
$content = Strings::replace(
$content,
self::PHP_CONST_REGEX,
static fn ($match): string => '"%const(' . str_replace('\\', '\\\\', $match[1]) . ')%"' . $match[2]
static fn ($match): string => '"%const(' . str_replace('\\', '\\\\', $match[1]) . ')%"' . ($match[3] ?? '')
);
if ($content !== $smartFileInfo->getContents()) {
$fileRealPath = sys_get_temp_dir() . '/__symplify_config_tranformer_clean_yaml/' . $smartFileInfo->getFilename();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
parameters:
class_constant: !php/const Symplify\ConfigTransformer\Tests\Converter\ConfigFormatConverter\YamlToPhp\YamlToPhpTest::TEST
class_constant_with_numbers: !php/const Symplify\ConfigTransformer\Tests\Converter\ConfigFormatConverter\YamlToPhp\YamlToPhpTest::TEST123
class_constant_legacy_colon: !php/const:Symplify\ConfigTransformer\Tests\Converter\ConfigFormatConverter\YamlToPhp\YamlToPhpTest::TEST
class: !php/const Symplify\ConfigTransformer\Tests\Converter\ConfigFormatConverter\YamlToPhp\YamlToPhpTest::class
class_legacy_colon: !php/const:Symplify\ConfigTransformer\Tests\Converter\ConfigFormatConverter\YamlToPhp\YamlToPhpTest::class
unexisting_constant: !php/const SomeClass::Constant
-----
<?php
Expand All @@ -15,7 +18,13 @@ return static function (ContainerConfigurator $containerConfigurator): void {

$parameters->set('class_constant', YamlToPhpTest::TEST);

$parameters->set('class_constant_with_numbers', YamlToPhpTest::TEST123);

$parameters->set('class_constant_legacy_colon', YamlToPhpTest::TEST);

$parameters->set('class', YamlToPhpTest::class);

$parameters->set('class_legacy_colon', YamlToPhpTest::class);

$parameters->set('unexisting_constant', SomeClass::Constant);
};