51 lines
1.3 KiB
PHP
51 lines
1.3 KiB
PHP
<?php
|
|
|
|
/**
|
|
* League.Csv (https://csv.thephpleague.com)
|
|
*
|
|
* (c) Ignace Nyamagana Butera <nyamsprod@gmail.com>
|
|
*
|
|
* For the full copyright and license information, please view the LICENSE
|
|
* file that was distributed with this source code.
|
|
*/
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace League\Csv\Serializer;
|
|
|
|
use Attribute;
|
|
use Deprecated;
|
|
use ReflectionAttribute;
|
|
use ReflectionClass;
|
|
|
|
/**
|
|
* @deprecated since version 9.17.0
|
|
*
|
|
* @see MapRecord
|
|
*/
|
|
#[Attribute(Attribute::TARGET_CLASS)]
|
|
final class AfterMapping
|
|
{
|
|
public readonly MapRecord $mapRecord;
|
|
public readonly array $methods;
|
|
|
|
#[Deprecated(message: 'use League\Csv\Serializer\MapRecord instead', since: 'league/csv:9.17.0')]
|
|
public function __construct(string ...$methods)
|
|
{
|
|
$this->mapRecord = new MapRecord($methods);
|
|
$this->methods = $this->mapRecord->afterMapping;
|
|
}
|
|
|
|
public static function from(ReflectionClass $class): ?self
|
|
{
|
|
$attributes = $class->getAttributes(self::class, ReflectionAttribute::IS_INSTANCEOF);
|
|
$nbAttributes = count($attributes);
|
|
|
|
return match (true) {
|
|
0 === $nbAttributes => null,
|
|
1 < $nbAttributes => throw new MappingFailed('Using more than one `'.self::class.'` attribute on a class property or method is not supported.'),
|
|
default => $attributes[0]->newInstance(),
|
|
};
|
|
}
|
|
}
|