Inclure constante dans la chaîne sans la concaténation
Est-il un moyen en PHP pour inclure une constante dans une chaîne sans la concaténation?
define('MY_CONSTANT', 42);
echo "This is my constant: MY_CONSTANT";
- L'Intuition me dit que "C'est ma constante: {MY_CONSTANT}" doit fonctionner. Il n'a pas. Il suffit de le mettre ici au cas où quelqu'un pense la même chose que moi.
Vous devez vous connecter pour publier un commentaire.
Pas.
Avec des Cordes, il n'existe aucun moyen pour PHP dire la chaîne de données à l'exception de la constante d'identificateurs. Cela vaut pour tous les formats de chaîne en PHP, y compris heredoc.
constant()
est une autre façon d'obtenir une constante, mais un appel de fonction ne peut pas être mis dans une chaîne sans concaténation soit.Manuel sur les constantes PHP
define('ANIMAL','turtles'); $constant='constant'; echo "I like {$constant('ANIMAL')}";
$constant='constant';
juste pour ce faire:echo "I like {$constant('ANIMAL')}";
.. n'est-il pas mieux de faire:$animal = ANIMAL; echo "I like $animal";
à la place?Oui, il est (en quelque sorte 😉 ):
Ce n'est probablement pas ce que vous visez, mais je pense que, techniquement, ce n'est pas la concaténation, mais d'une substitution, et à partir de cette hypothèse, il comprend une constante dans une chaîne sans la concaténation de.
À utiliser des constantes à l'intérieur de chaînes vous pouvez utiliser la méthode suivante:
, Comment cela fonctionne?
Vous pouvez utiliser n'importe quelle chaîne de caractères nom de la fonction et de l'arbitraire des 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.
Produit
Fonctions anonymes trop
Vous pouvez également utiliser les fonctions anonymes à condition que vous êtes en cours d'exécution de PHP 5.3+.
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 renvoie true lorsque transmis à
is_callable
serait la cause d'une erreur fatale lorsqu'il est utilisé dans une chaîne de caractères:Garder à 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à.
$_ = create_function('$a','return $a;'); $s = "I like {$_(ANIMAL)}"
. Thetaiko version supprime la nécessité pour les citations, et un trait de soulignement est mignon.Si vous avez vraiment voulez echo constant sans concaténation voici la solution:
note: dans cet exemple echo prend un certain nombre de paramètres (regarder les virgules), de sorte qu'il n'est pas vraiment de la concaténation
Echo se comporte comme une fonction, il faut plus de paramètres, il est plus efficace que la concaténation, car il n'a pas à concaténer et puis l'écho, il a juste fait écho à tout, sans la nécessité de la création de la nouvelle Chaîne concaténée objet :))
MODIFIER
Aussi, si vous envisagez de la concaténation de chaînes, les passages des chaînes comme paramètres ou de l'écriture ensemble des chaînes de caractères avec " , Le , (virgule version) est toujours la plus rapide, la prochaine va . (concaténation avec ' guillemets simples) et le plus lent de la chaîne de méthode de construction est l'aide de guillemets doubles ", parce que les expressions écrites de cette manière doivent être évalués en fonction de variables déclarées et fonctions..
Que vous pouvez faire:
Comme d'autres l'ont souligné, vous ne pouvez pas le faire. PHP dispose d'une fonction
constant()
qui ne peut pas être appelée directement dans une chaîne de caractères, mais on peut facilement contourner ce.et un exemple de base sur son utilisation:
$constant = 'constant';
au lieu de définir une autre fonction, et il serait fonctionnent de la même manière depuis que la fonction existe déjà.La façon la plus simple est
Une autre manière, en utilisant des
(s)printf
Voici quelques solutions de rechange pour les autres réponses, qui semblent être surtout porté sur l' "{$}" truc. Si aucune garantie n'est faite sur leur vitesse; tout cela est de la pure sucre syntaxique. Pour ces exemples, nous supposerons que l'ensemble des constantes ci-dessous ont été définis.
À l'aide de l'extrait()
C'est sympa parce que le résultat est identique pour les variables. Tout d'abord vous créer une réutilisables fonction:
Ensuite l'appeler à partir de n'importe quel champ d'application:
Ici, il en petit caractère constantes pour être plus facile sur les doigts, mais vous pouvez supprimer les array_change_key_case() pour les garder comme-est. Si vous avez déjà en conflit local, les noms de variables, les constantes de ne pas les remplacer.
L'aide de la chaîne de remplacement
Celui-ci est similaire à sprintf(), mais utilise un seul jeton de remplacement et accepte un nombre illimité d'arguments. Je suis sûr qu'il y a de meilleures façons de le faire, mais pardonnez mon clunkiness et essayez de vous concentrer sur l'idée derrière tout cela.
Comme avant, vous créez une réutilisables fonction:
Ensuite l'appeler à partir de n'importe quel champ d'application:
Vous pouvez utiliser n'importe quel jeton de remplacement que vous voulez, comme un % ou #. J'ai utilisé la barre oblique ici, puisque c'est un peu plus facile à taper.
C'est amusant que vous pouvez utiliser le mot clé "const" comme un nom pour votre fonction pour empêcher l'espace de noms de l'abandon de détritus:
Vous pouvez aussi utiliser $GLOBALS propager 'const' fonction partout dans le code:
Doute est-il sûr pour l'avenir de l'aide. Et ce qui est pire - c'est encore semble laid.
Je crois que cela répond à l'OP question d'origine. La seule chose, c'est la globals clé de l'index semble être la seule à travailler comme des minuscules.
De sortie:
an associative array containing references to all variables
.$db_user = 'root';