Est-il possible en PHP pour inclure une constante dans une chaîne sans concaténation ?
Réponses
Trop de publicités?N °
Cordes, n’a aucun moyen pour PHP dire les données de chaîne apart et identificateurs constants. Cela vaut pour tous les formats de chaîne en PHP, y compris la syntaxe heredoc.
``est une autre façon de se procurer une constante, mais un appel de fonction ne peut être mis à une chaîne sans concaténation, ni.
Pour utiliser des constantes à l'intérieur de chaînes vous pouvez utiliser la méthode suivante:
define( 'ANIMAL', 'turtles' );
$constant = 'constant';
echo "I like {$constant('ANIMAL')}";
Comment cela fonctionne?
Vous pouvez utiliser n'importe quelle chaîne de caractères nom de la fonction et de l'arbitraire de paramètres
On peut placer aucun nom de la fonction dans une variable et de l'appeler avec les paramètres à l'intérieur d'une chaîne de caractères entre guillemets. Fonctionne avec de multiples paramètres.
$fn = 'substr';
echo "I like {$fn('turtles!', 0, -1)}";
Produit
J'aime les tortues
Les fonctions anonymes trop
Vous pouvez également utiliser les fonctions anonymes à condition que vous êtes en cours d'exécution de PHP 5.3+.
$escape = function ( $string ) {
return htmlspecialchars( (string) $string, ENT_QUOTES, 'utf-8' );
};
$userText = "<script>alert('xss')</script>";
echo( "You entered {$escape( $userText )}" );
Produit échappé html comme prévu.
Rappel des tableaux pas permis!
Si vous êtes sous l'impression que le nom de la fonction peut être appelable, ce n'est pas le cas, comme un tableau qui retourne true lorsque passée de is_callable
serait la cause d'une erreur fatale lorsqu'il est utilisé dans une chaîne de caractères:
class Arr
{
public static function get( $array, $key, $default = null )
{
return is_array( $array ) && array_key_exists( $key, $array )
? $array[$key]
: $default;
}
}
$fn = array( 'Arr', 'get' );
var_dump( is_callable( $fn ) ); // outputs TRUE
// following line throws Fatal error "Function name must be a string"
echo( "asd {$fn( array( 1 ), 0 )}" );
Gardez à l'esprit
Cette pratique est mal conseillé, mais parfois, les résultats dans beaucoup plus lisible le code, donc c'est à vous - la possibilité est là.