PHP et les chaînes de caractères.

in #programming7 years ago

Bonjour à tous,

Aujourd'hui je vais vous présenter les différentes méthodes pour déclarer une chaînes de caractères en PHP.

Bien déclarer ses chaînes de caractères en PHP

chaîne de caractères php

Il existe actuellement 4 façons de délimiter une chaînes de caractères:

  • les guillements simpes
  • les guillements doubles
  • la syntaxe Heredoc
  • la syntaxe Nowdoc

Les guillemets simples


La première méthode pour déclarer une chaîne de caractères est d'utiliser les guillemets simples.

<?php
echo 'Ceci est une chaîne de caractères entourée de guillemets simples';
echo 'Si je veux afficher un guillemet simple je dois l\'échapper.';
echo 'Le caractère d\'échappement "\\" doit lui aussi être échappé.';
echo 'Je peux utiliser "les guillemets doubles" sans soucis.';
echo 'Le caractère d\'échappement ne fonctionne pas sur les autres caractères. \n et \r s\'afficheront tels quels.';

Résultat :

Ceci est une chaîne de caractères entourée de guillemets simples
Si je veux afficher un guillemet simple je dois l'échapper.
Le caractère d'échappement "\" doit lui aussi être échappé.
Je peux utiliser "les guillemets doubles" sans soucis.
Le caractère d'échappement ne fonctionne pas sur les autres caractères. \n et \r s'afficheront tels quels.

Les guillemets doubles


Si nous utilisons les guillemets doubles (") à la place des guillemets simples ('), nous aurons alors à notre disposition un certains nombres de séquences utilisables avec le caractère d'échappement ().

SéquencesUtilisations
\nFin de ligne
\rRetour à la ligne
\tTabulation horizontale
\vTabulation verticale
\eEchappement
\fSaut de page
\\Antislash
\$Signe dollar
\"Guillemet double
<?php
echo "Ceci est une chaîne de caractères entourée de guillemets doubles.";
echo "Je peux utiliser des séquences \n\r pour faire des retour à la ligne, \t des tabulations horizontales ou \v verticales.";

Résultat :

Ceci est une chaîne de caractères entourée de guillemets doubles.
Je peux utiliser des séquences
pour faire des retour à la ligne, des tabulations horizontales ou
verticales.

L'avantage des guillemets doubles est que les noms de variables seront interprétés.
Deux notations sont possibles pour l'interprétation des variables : la simple ou la complexe.

La notation simple


L'utilisation du signe ($) suivi du nom d'une variable entouré ou non d'accolades permet de faire appel à cette variable.

<?php

$myVar =  "ceci est le contenu de ma variable";

echo "j'affiche le contenu de ma variable : $myVar";
echo "j'affiche le contenu de ma variable : ${myVar}";

$myArray = ['zéro', 'un', 'deux', 'trois'];

echo  "mon tableau : $myArray[0], ${myArray[1]}, ${myArray[2]}, $myArray[3] et encore du texte.";

Résultat :

j'affiche le contenu de ma variable : ceci est le contenu de ma variable
j'affiche le contenu de ma variable : ceci est le contenu de ma variable
mon tableau : zéro, un, deux, trois et encore du texte.

La notation complexe


La notation complexe a l'avantage de pouvoir faire appel à des éléments plus complexe tels que des attributs d'objets ou méthodes.

Son utilisation est simple, il suffit d'entourer notre expression complexe d'accolades (sans espaces).

On pourra également faire appel à des constantes ou des variables static de classes, cependant elles seront interprétés comme des noms de variables liées au contexte.

<?php
class Test {

    public $publicVar = "variable publique";
    private $privateVar = "variable privée";
    const MA_CONSTANTE = 'constante';
    public static $staticVar = 'static';

    public function getPrivateVar() {
        return $this->privateVar;
    }
}

$constante = 'aaa';
$static = 'bbb';

$myVar = new Test();

echo "Ceci est une {$myVar->publicVar}";
echo "Ceci est une {$myVar->getPrivateVar()}";
echo "Ceci affiche {${Test::MA_CONSTANTE}}";
echo "Ceci affiche {${Test::$staticVar}}";

Résultat :

Ceci est une variable publique
Ceci est une variable privée
Ceci affiche aaa
Ceci affiche bbb

La syntaxe Heredoc


La troisième méthode pour définir une chaîne de caractères se comporte comme une chaîne entourée de guillemets doubles. Les variables seront donc interprétées et les séquences d'échappement utilisables.

Sa syntaxe peut cependant sembler particulière.

Il faudra utiliser 3 signes inférieurs suivi d'un identifiant. Aux lignes suivantes, nous aurons notre chaîne. Pour conclure, sur une nouvelle ligne, sans indentation ni espace, il faudra répéter notre identifiant et terminer la ligne par un point-virgule.

<?php

$variable = 1234;

$heredoc = <<<IDENTIFIANT
Voici ma chaîne.
Je peux écrire ce que je veux.
Voici une variable $variable
IDENTIFIANT;

echo $heredoc;

Résultat :

Voici ma chaîne.
Je peux écrire ce que je veux .
Voici une variable 1234

La syntaxe Nowdoc


Pour finir, la syntaxe nowdoc est similaire à heredoc, à ceci près que heredoc est comparable aux guillemets doubles alors que nowdoc est comparables aux guillemets simples.

Sa syntaxe est proche de celle d'heredoc. Il faudra simplement entourer l'identifiant de guillemets simples lors de sa déclaration.

<?php
$variable = 1234;

$heredoc = <<<'IDENTIFIANT'
Voici ma chaîne.
Je peux écrire ce que je veux.
Voici une variable $variable
IDENTIFIANT;

echo $heredoc;

Résultat :

Voici ma chaîne.
Je peux écrire ce que je veux.
Voici une variable $variable

La concaténation de chaînes (bonus)


Je ne pouvais pas vous laisser partir sans vous parler de l'opérateur de concaténation de chaînes : le point (.)
Il suffit de le placer entre deux chaînes, variables ou tout autre élément représentant une chaîne de caractères pour qu'ils soient mis bout à bout.

<?php

class Test {
    public static function bonjour() {
        echo 'Bonjour, voici ';
    }
}

$var = "un bout de texte.";

echo Test::bonjour() . $var;

Résultat :

Bonjour, voici un bout de texte

Le mot de la fin


J'espère avoir été le plus clair possible.
Personnellement j'utilise principalement les deux premières méthodes pour déclarer mes chaînes de caractères.
Heredoc et Nowdoc peuvent être utilisées pour gagner en lisibilité en cas de texte longs.

A très bientôt pour découvrir un peu plus PHP...

Sort:  

Congratulations @bibi4537! You received a personal award!

1 Year on Steemit

Click here to view your Board of Honor

Do not miss the last post from @steemitboard:

Saint Nicholas challenge for good boys and girls

Support SteemitBoard's project! Vote for its witness and get one more award!

Congratulations @bibi4537! You received a personal award!

Happy Birthday! - You are on the Steem blockchain for 2 years!

You can view your badges on your Steem Board and compare to others on the Steem Ranking

Vote for @Steemitboard as a witness to get one more award and increased upvotes!