Helper/ConsoleHelper.php
public static function prompt( $text, $options = [] ) {
		$options = ArrayHelper::merge(
			[
				'required'  => false,
				'default'   => null,
				'pattern'   => null,
				'validator' => null,
				'error'     => 'Invalid input.',
			],
			$options
		);
		$error   = null;
		top:
		$input = $options['default']
			? static::input( "$text [" . $options['default'] . '] ' )
			: static::input( "$text " );
		if ( $input === '' ) {
			if ( isset( $options['default'] ) ) {
				$input = $options['default'];
			} else if ( $options['required'] ) {
				static::output( $options['error'] );
				goto top;
			}
		} else if ( $options['pattern'] && ! preg_match( $options['pattern'], $input ) ) {
			static::output( $options['error'] );
			goto top;
		} else if ( $options['validator'] &&
		            ! call_user_func_array( $options['validator'], [ $input, &$error ] )
		) {
			static::output( isset( $error ) ? $error : $options['error'] );
			goto top;
		}

		return $input;
	}
public static function prompt( $text, $options = [] ) {
		$options = ArrayHelper::merge(
			[
				'required'  => false,
				'default'   => null,
				'pattern'   => null,
				'validator' => null,
				'error'     => 'Invalid input.',
			],
			$options
		);
		$error   = null;
		top:
		$input = $options['default']
			? static::input( "$text [" . $options['default'] . '] ' )
			: static::input( "$text " );
		if ( $input === '' ) {
			if ( isset( $options['default'] ) ) {
				$input = $options['default'];
			} else if ( $options['required'] ) {
				static::output( $options['error'] );
				goto top;
			}
		} else if ( $options['pattern'] && ! preg_match( $options['pattern'], $input ) ) {
			static::output( $options['error'] );
			goto top;
		} else if ( $options['validator'] &&
		            ! call_user_func_array( $options['validator'], [ $input, &$error ] )
		) {
			static::output( isset( $error ) ? $error : $options['error'] );
			goto top;
		}

		return $input;
	}
public static function prompt ( $ text , $ options = [ ] ) { $ options = ArrayHelper :: merge ( [ 'required' => false , 'default' => null , 'pattern' => null , 'validator' => null , 'error' => 'Invalid input.' , ] , $ options ) ; $ error = null ; top : $ input = $ options [ 'default' ] ? static :: input ( "$text [" . $ options [ 'default' ] . '] ' ) : static :: input ( "$text " ) ; if ( $ input === '' ) { if ( isset ( $ options [ 'default' ] ) ) { $ input = $ options [ 'default' ] ; } else if ( $ options [ 'required' ] ) { static :: output ( $ options [ 'error' ] ) ; goto top ; } } else if ( $ options [ 'pattern' ] && ! preg_match ( $ options [ 'pattern' ] , $ input ) ) { static :: output ( $ options [ 'error' ] ) ; goto top ; } else if ( $ options [ 'validator' ] && ! call_user_func_array ( $ options [ 'validator' ] , [ $ input , & $ error ] ) ) { static :: output ( isset ( $ error ) ? $ error : $ options [ 'error' ] ) ; goto top ; } return $ input ; }
Prompts the user for input and validates it.

@param string $text    prompt string
@param array  $options the options to validate the input:

- `required`: whether it is required or not
- `default`: default value if no input is inserted by the user
- `pattern`: regular expression pattern to validate user input
- `validator`: a callable function to validate input. The function must accept two parameters:
- `input`: the user input to validate
- `error`: the error value passed by reference if validation failed.

@return string the user input
Prompts the user for input and validates it .