[Back] <?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 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;
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);
if (0 === $nbAttributes) {
return null;
}
if (1 < $nbAttributes) {
throw new MappingFailed('Using more than one `'.self::class.'` attribute on a class property or method is not supported.');
}
return $attributes[0]->newInstance();
}
}