Webmozart\Assert\Assert::alnum PHP Method

alnum() public static method

public static alnum ( $value, $message = '' )
    public static function alnum($value, $message = '')
    {
        $locale = setlocale(LC_CTYPE, 0);
        setlocale(LC_CTYPE, 'C');
        $valid = !ctype_alnum($value);
        setlocale(LC_CTYPE, $locale);
        if ($valid) {
            static::reportInvalidArgument(sprintf($message ?: 'Expected a value to contain letters and digits only. Got: %s', static::valueToString($value)));
        }
    }

Usage Example

 /**
  * Registers a repository as PHP stream wrapper.
  *
  * The resources of the repository can subsequently be accessed with PHP's
  * file system by prefixing the resource paths with the registered URI
  * scheme:
  *
  * ```php
  * ResourceStreamWrapper::register('puli', $repo);
  *
  * // /app/css/style.css
  * $contents = file_get_contents('puli:///app/css/style.css');
  * ```
  *
  * Instead of passing a repository, you can also pass a callable. The
  * callable is executed when the repository is accessed for the first time
  * and should return a valid {@link ResourceRepository} instance.
  *
  * @param string                      $scheme            The URI scheme.
  * @param ResourceRepository|callable $repositoryFactory The repository to use.
  *
  * @throws StreamWrapperException If a repository was previously registered
  *                                for the same scheme. Call
  *                                {@link unregister()} to unregister the
  *                                scheme first.
  */
 public static function register($scheme, $repositoryFactory)
 {
     if (!$repositoryFactory instanceof ResourceRepository && !is_callable($repositoryFactory)) {
         throw new InvalidArgumentException(sprintf('The repository factory should be a callable or an instance ' . 'of ResourceRepository. Got: %s', $repositoryFactory));
     }
     Assert::string($scheme, 'The scheme must be a string. Got: %s');
     Assert::alnum($scheme, 'The scheme %s should consist of letters and digits only.');
     Assert::startsWithLetter($scheme, 'The scheme %s should start with a letter.');
     if (isset(self::$repos[$scheme])) {
         throw new StreamWrapperException(sprintf('The scheme "%s" has already been registered.', $scheme));
     }
     self::$repos[$scheme] = $repositoryFactory;
     stream_wrapper_register($scheme, __CLASS__);
 }