Variable de chaîne constante de classe PHP couvrant plusieurs lignes
Je veux avoir une variable de chaîne pour une classe PHP, qui serait disponible pour toutes les méthodes.
Cependant, cette variable est assez long, donc je veux le séparer en plusieurs lignes.
Par exemple,
$variable = "line 1" .
"line 2" .
"line 3";
Mais ci-dessus ne fonctionne pas.
J'ai essayé de NEM, mais EOD n'est pas autorisé au sein de la classe. Et quand je la déclarer en dehors de la classe, je ne peux pas accéder à la variable à partir de l'intérieur de la classe.
Quelle est la meilleure façon de faire?
source d'informationauteur ericbae
Vous devez vous connecter pour publier un commentaire.
Si vous utilisez PHP >= 5.3vous pouvez utiliser Syntaxe HEREDOC pour déclarer votre chaîne :
Mais c' :
.
ne fonctionnera pas : c'est fait au moment de l'exécution.Et un autre inconvénient est que cela va mettre des retours à la ligne dans la chaîne-ce qui pourrait, ou non, être une mauvaise chose.
Si vous utilisez PHP <= 5.2 :
Vous ne pouvez pas le faire ; une solution pourrait être d'initialiser la chaîne dans votre classe constructeur :
(même pas avec des retours à la ligne)
Ou, ici, vous pouvez faire des concaténations de chaînes de caractères :
(de cette façon, pas de retours à la ligne)
D'autre, vous pouvez avoir une chaîne qui est entourée par des guillemets simples et doubles, et le mettre sur plusieurs lignes :
(Ici, encore une fois, vous aurez des retours à la ligne dans la chaîne résultante)
Sorties:
Ce que vous avez maintenant fonctionne à l'aide du opérateur de concaténation de chaîne. Si vous pouvez poster plus d'informations sur votre problème, un code ou peut-être une explication plus comment il ne fonctionne pas. Plus d'informations vous mènera à une meilleure réponse.
Je suis en utilisant PHP 5.5.9 et avons rencontré un problème similaire qu'avec
class
constantes. Je veux utiliser une assez longue chaîne comme une constante, mais je ne veux pas:Je pense que la solution ici est quelque chose qui se fait beaucoup dans le Laravel 5 échafaudage et pourquoi sont-ils gardés comme cela m'avait dérouté jusqu'à maintenant. Ce qu'ils font est quelque chose comme:
Cette méthode fournit une immuable chaîne. Vous n'avez absolument pas l'obtenir que par la création d'un
protected
/private
variable avec des getters depuis sa encore mutable en interne. Que le changement du code ou de la transgression peut modifier cette chaîne. Un autre pro rendre statique permet d'avoir une seule instance de chaque classe.Malheureusement, votre code sera
Class::getProperty()
plutôt que de simplementClass::property
. Un autre inconvénient est que la concaténation serait fait à chaque fois que vous appelez la fonction mais selon la façon dont vous l'utiliser, ce coût est généralement négligeable.Ce serait cool si le compilateur PHP ont été en mesure de reconnaître que l'opération de concaténation sur les seules valeurs déjà connues au moment de la compilation peut être exécuté au moment de la compilation et le résultat substitué (des êtres de plus compétent que moi de savoir pourquoi il en est ainsi).