text. */ public static function render( string $template, array $values ): string { return (string) preg_replace_callback( '/\{([a-z_]+)\}/', static function ( $m ) use ( $values ) { return (string) ( $values[ $m[1] ] ?? '' ); }, $template ); } /** * Placeholders a template uses. * * @param string $template Template. * @return string[] */ public static function placeholders( string $template ): array { preg_match_all( '/\{([a-z_]+)\}/', $template, $m ); return array_values( array_unique( $m[1] ) ); } }