rector/vendor/rector/rector-nette/packages/NeonParser/Services/ServiceTypeResolver.php
Tomas Votruba 40f2bcdb1e Updated Rector to commit 29b79786e2
29b79786e2 add getStringValue() to value resolver (#1130)
2021-11-02 15:11:40 +00:00

51 lines
1.8 KiB
PHP

<?php
declare (strict_types=1);
namespace Rector\Nette\NeonParser\Services;
use RectorPrefix20211102\Nette\Neon\Node;
use RectorPrefix20211102\Nette\Neon\Node\ArrayItemNode;
use RectorPrefix20211102\Nette\Neon\Node\ArrayNode;
use RectorPrefix20211102\Nette\Neon\Node\EntityNode;
final class ServiceTypeResolver
{
/**
* @var string
*/
private const FACTORY_KEYWORD = 'factory';
/**
* @var string
*/
private const CLASS_KEYWORD = 'class';
/**
* @return string|null
*/
public function resolve(\RectorPrefix20211102\Nette\Neon\Node $serviceNode)
{
if (!$serviceNode instanceof \RectorPrefix20211102\Nette\Neon\Node\ArrayItemNode) {
return null;
}
if (!$serviceNode->value instanceof \RectorPrefix20211102\Nette\Neon\Node\ArrayNode) {
return null;
}
foreach ($serviceNode->value->items as $serviceConfigurationItem) {
if ($serviceConfigurationItem->key === null) {
continue;
}
if ($serviceConfigurationItem->key->toString() === self::FACTORY_KEYWORD) {
if ($serviceConfigurationItem->value instanceof \RectorPrefix20211102\Nette\Neon\Node\EntityNode) {
return $serviceConfigurationItem->value->value->toString();
}
return $serviceConfigurationItem->value->toString();
}
if ($serviceConfigurationItem->key->toString() === self::CLASS_KEYWORD) {
if ($serviceConfigurationItem->value instanceof \RectorPrefix20211102\Nette\Neon\Node\EntityNode) {
return $serviceConfigurationItem->value->value->toString();
}
return $serviceConfigurationItem->value->toString();
}
}
return null;
}
}