MachineName.php 451 Bytes
<?php

declare(strict_types=1);

namespace DrupalCodeGenerator\Validator;

/**
 * Validates required machine name.
 */
final class MachineName {

  /**
   * @throws \UnexpectedValueException
   */
  public function __invoke(mixed $value): string {
    if (!\is_string($value) || !\preg_match('/^[a-z][a-z0-9_]*[a-z0-9]$/', $value)) {
      throw new \UnexpectedValueException('The value is not correct machine name.');
    }
    return $value;
  }

}