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 longue, je tiens donc à la séparer en plusieurs lignes. P>
Par exemple, P>
$variable = "line 1" . "line 2" . "line 3";
3 Réponses :
Si vous utilisez PHP> = 5.3 strong>, vous pouvez utiliser heredoc syntaxe pour déclarer votre chaîne: Et un autre inconvénient est que cela met les nouvelles lignes dans la chaîne -. Qui pourrait, ou non, être une mauvaise chose p> Vous ne pouvez pas le faire; une solution pourrait être d'initialiser la chaîne dans votre constructeur de la classe: p> class MyClass {
public $str = "this is
a long
string";
}
code>, ne fonctionnera pas.. Il est fait au moment de l'exécution li>
Ul> li>
Ul>
Si vous utilisez PHP : p> class MyClass {
public $str;
public function __construct() {
$this->str = 'this is' .
'a long' .
'string';
}
}
Ceci est dû au fait que la valeur de la chaîne doit être connue au moment de la compilation i> mal.
@stereofrogogue FR2.PL.net/Manual/fr/Language.oop5. properties.php dit Cette déclaration peut inclure une initialisation, mais cette initialisation doit être une valeur constante - c'est-à-dire qu'il doit être en mesure d'être évalué au moment de la compilation i>. vraiment mal?
Oh ; Avez-vous un exemple de travail d'initialisation d'une propriété de classe avec une valeur non constante?
J'ai posté qu'une fois, il va fondamentalement comme ça: définir ('foo', rand ()); classe x {var $ bar = foo; }; code>
Oh je vois ; n'a pas pensé à utiliser des définir dans cette situation ^^ merci pour la note :-)
Aucune de ces méthodes ne fonctionne pour une classe statique ... -_- Neuflines dans certains cas d'un littéral de chaîne statique ne sont pas acceptables.
$var = "this is a really long variable and I'd rather have it " . "span over multiple lines for readability sake. God it's so hot in here " . "can someone turn on the A/C?"; echo $var; Which outputs: this is a really long variable and I'd rather have it span over multiple lines for readability sake. God it's so hot in here can someone turn on the A/C? What you have now works using the string concatenation operator. If you can post more information regarding your issue, some code or perhaps a further explanation of how it doesn't work. More information will lead you to a better answer.
Cela fonctionnera pour une variable à l'intérieur d'une méthode; Mais cela fonctionnera-t-il pour une propriété de classe? (que je crois est quelle est la question à propos de) i>
Bonjour, comme dit Martin, je voulais déclarer la variable à l'extérieur de la classe, puis l'accéder dans une méthode. $ var = "line1". "ligne 2"; fonctionne si je le déclare dans une fonction, mais je ne le fais pas à l'extérieur. Ça ne me laissera même pas.
Ah, que je n'ai pas essayé, je pourrais le tester quand je suis de retour du travail, si nécessaire. Mais il semble que vous aviez déjà trouvé une solution.
J'utilise PHP 5.5.9 et je suis tombé sur un problème similaire uniquement avec Je pense que la solution ici est quelque chose qui se fait beaucoup dans l'échafaudage Laravel 5 et pourquoi ils ont continué à faire cela m'avait déconcerté jusqu'à maintenant. Ce qu'ils font, c'est quelque chose comme: p> Cette méthode fournit une chaîne Malheureusement, votre code serait maintenant Ce serait cool si le compilateur PHP était capable de reconnaître que le compilateur PHP L'opération de concaténation sur uniquement les valeurs déjà connues au moment de la compilation peut être exécutée au moment de la compilation et le résultat substitué (des êtres plus compétents que moi savons pourquoi cela en est ainsi). P> P> Constantes de classe code>. Je veux utiliser une ficelle un peu longue comme une constante mais je ne veux pas:
protégé
/
Variable code> avec getters depuis sa nature mutable en interne. La modification du code ou le remplacement ne peut modifier que cette chaîne. Un autre pro est que la fabrication statique permet une seule "instance" par classe. P>
Classe :: getProperty () code> plutôt que simplement
Classe :: Propriété code>. Un autre inconvénient est que la concaténation se ferait chaque fois que vous appelez la fonction mais en fonction de la manière dont vous utilisez cela, ce coût est généralement négligeable. P>
Si vous n'ajoutez pas d'un setter et aucune méthode ne le modifie, une variable privée est également immuable que si vous modifiez le code. Mais retourner la chaîne d'une méthode pourrait i> donner une intention plus claire quant à ce que vous faites.
Je suis d'accord. Je viens de suggérer ce formulaire car il n'y a pas de moyen implicite de changer la chaîne sans alléger intentionnellement la méthode ou de modifier le texte à l'intérieur. Le seul moyen de modifier la chaîne consiste à remplacer la méthode ou à modifier le code à l'intérieur. À cet égard, c'est plus proche i> à immuable, car nous avons supprimé des moyens involontaires de la modifier.
Je ne vois aucune raison pour laquelle ce qui précède ne fonctionnera pas. Pouvez-vous publier exactement votre code. Merci.
Vous pouvez sûrement couvrir la variable sur plusieurs lignes, pouvez-vous publier le code et exactement comment cela ne fonctionne pas?
Vous pouvez accéder aux variables en dehors de la classe à l'aide du mot-clé
global code> ou du
$ global code> une matrice superglobale, au fait. Je ne le recommande pas cela, bien sûr.
Cracher une autre chose que PHP ne peut pas faire que toutes les autres langues sur Terre peuvent sans hâts.