2010-11-01 24 views
9

Je viens de lire la pensée php doucmentation pour heredocs mais je n'ai pas vu de moyen d'intenter le code correctement. Est-ce possible en php?PHP: Utilisation de l'indentation correcte avec Heredocs

En ce moment je le fais, mais c'est mauvais pour la lisibilité.

<?php 

     if(something){ 
      ... 
      echo <<< END  
        This is a test. I am writing this 
        text out. 
END; 
     } # end of if statment 

Je voudrais avoir quelque chose comme ceci:

<?php 

     if(something){ 
      ... 
      echo <<< END  
        This is a test. I am writing this 
        text out. 
      END; 
     } # end of if statment 

Je sais que bash a une méthode pour le faire (bien que je ne sais plus ce qu'il est), donc je me demandais si elle était possible de faire en php. Je ne pense pas mais je pensais que je demanderais.

Répondre

7

Il est une limitation de PHP pour formater correctement les déclarations de heredoc. Il est une limitation de l'analyseur. Comme le documentation indique:.

Il est très important de noter que la ligne avec l'identifiant de fermeture doit contenir aucun autre caractère, à l'exception peut-être un point-virgule (;) cela signifie surtout que t L'identificateur ne doit pas être indenté, et il ne doit pas y avoir d'espace ou d'onglet avant ou après le point-virgule . Il est également important de réaliser que le premier caractère avant l'identifiant de fermeture doit être un retour à la ligne tel que défini par le système d'exploitation local . Ceci est sur les systèmes UNIX , y compris Mac OS X. Le délimiteur de fermeture (éventuellement suivi de par un point-virgule) doit également être suivi de par une nouvelle ligne.

Si cette règle a été enfreinte et l'identifiant de fermeture n'est pas « propre », il ne sera pas considéré comme un identifiant fermeture et PHP va continuer à chercher un. Si un identificateur de fermeture correct n'est pas trouvé avant la fin du fichier actuel, une erreur d'analyse résultera à la dernière ligne.

On ne sait pas si cela va être résolu dans le futur de PHP.

2

AFAIK, ce n'est pas possible, vous devez mettre fermeture identifiant heredoc sans espaces/onglets/indentation :(