2021-06-01 12:39:02 +00:00
< ? php
/*
* This file is part of the Symfony package .
*
* ( c ) Fabien Potencier < fabien @ symfony . com >
*
* For the full copyright and license information , please view the LICENSE
* file that was distributed with this source code .
*/
2021-06-05 14:17:34 +00:00
namespace RectorPrefix20210605\Symfony\Component\DependencyInjection\Attribute ;
2021-06-01 12:39:02 +00:00
2021-06-05 14:17:34 +00:00
use RectorPrefix20210605\Symfony\Component\DependencyInjection\Exception\InvalidArgumentException ;
2021-06-01 12:39:02 +00:00
/**
* An attribute to tell how a dependency is used and hint named autowiring aliases .
*
* @ author Nicolas Grekas < p @ tchwork . com >
* @ Attribute
*/
final class Target
{
/**
* @ var string
*/
public $name ;
public function __construct ( string $name )
{
$this -> name = \lcfirst ( \str_replace ( ' ' , '' , \ucwords ( \preg_replace ( '/[^a-zA-Z0-9\\x7f-\\xff]++/' , ' ' , $name ))));
}
public static function parseName ( \ReflectionParameter $parameter ) : string
{
if ( 80000 > \PHP_VERSION_ID || ! ( $target = $parameter -> getAttributes ( self :: class )[ 0 ] ? ? null )) {
return $parameter -> name ;
}
$name = $target -> newInstance () -> name ;
if ( ! \preg_match ( '/^[a-zA-Z_\\x7f-\\xff]/' , $name )) {
if (( $function = $parameter -> getDeclaringFunction ()) instanceof \ReflectionMethod ) {
$function = $function -> class . '::' . $function -> name ;
} else {
$function = $function -> name ;
}
2021-06-05 14:17:34 +00:00
throw new \RectorPrefix20210605\Symfony\Component\DependencyInjection\Exception\InvalidArgumentException ( \sprintf ( 'Invalid #[Target] name "%s" on parameter "$%s" of "%s()": the first character must be a letter.' , $name , $parameter -> name , $function ));
2021-06-01 12:39:02 +00:00
}
return $name ;
}
}