Déclarer une chaîne de caractères en PHP avec un bloc Heredoc / Nowdoc

Publié le 30/04/2022 • Mis à jour le 30/04/2022


English language detected! 🇬🇧

  We noticed that your browser is using English. Do you want to read this post in this language?

Read the english version 🇬🇧 Close

Dans ce bout de code, nous voyons comment déclarer une chaîne de caractères en PHP avec un bloc Heredoc et Nowdoc. Celui-ci est pour moi car j'oublie toujours comment faire ! Comme vous pouvez le constater, l'analyseur de synthaxe est perdu avec les guillemets simples permettant de déclarer le block Nowblock. En utilisant ce type de déclaration, toute la chaîne est stockée brute et les variables ne sont pas remplacées. Ça fonctionne aussi avec les constantes et les propriétés de classe.


<?php

declare(strict_types=1);

namespace App\Controller\Snippet;

/**
 * J'utilise un trait PHP afin d'isoler chaque snippet dans un fichier.
 * Ce code doit être apellé d'un contrôleur Symfony étendant AbstractController (depuis Symfony 4.2)
 * ou Symfony\Bundle\FrameworkBundle\Controller\Controller (Symfony <= 4.1).
 * Les services sont injectés dans le constructeur du contrôleur principal.
 */
trait Snippet200Trait
{
    public function snippet200(): void
    {
        $name = 'COil';

        $heredoc = <<<HEREDOC
Heredoc example
on multiple lines
my name is $name


HEREDOC;

        echo $heredoc;

        $nowdoc = <<<'NOWDOC'
Nowdoc example
on multiple lines
my name is $name <- the name variabled isn't replaced here !
"<<'/\'>>"

NOWDOC;

        echo $nowdoc;

        // That's it! 😁
    }
}

 Exécuter le snippet  Plus sur Stackoverflow   Lire la doc  Snippet aléatoire