PHP global de la portée des variables à l'intérieur d'une classe
J'ai le script suivant
myclass.php
<?php
$myarray = array('firstval','secondval');
class littleclass {
private $myvalue;
public function __construct() {
$myvalue = "INIT!";
}
public function setvalue() {
$myvalue = $myarray[0]; //ERROR: $myarray does not exist inside the class
}
}
?>
Est-il un moyen de faire $myarray disponible à l'intérieur de la littleclass, par une simple déclaration? Je ne veux pas passer comme un paramètre du constructeur, si cela était possible.
En outre, j'espère que vous POUVEZ réellement faire des variables globales visible à une classe php d'une certaine manière, mais c'est ma première fois face au problème, donc je ne sais vraiment pas.
Pourquoi? C'est 180º loin du sens commun. Et avez-vous lu la documentation à tous?
Attention: l'utilisation de variables globales deviendra rapidement votre code dans un mess difficile à maintenir. Envisager de passer en tant que paramètre au constructeur, ou
Je n'ai pas de " lire la documentation, puisque je ne sais même pas quoi chercher. Merci pour le "pourquoi global" suggestion.
Je suis d'accord avec @TomalakGeret'kal: Vous le faites mal!
Merci pour l'approche de la solution bazmegakapa
Attention: l'utilisation de variables globales deviendra rapidement votre code dans un mess difficile à maintenir. Envisager de passer en tant que paramètre au constructeur, ou
setvalue()
, selon la logique de votre application.Je n'ai pas de " lire la documentation, puisque je ne sais même pas quoi chercher. Merci pour le "pourquoi global" suggestion.
Je suis d'accord avec @TomalakGeret'kal: Vous le faites mal!
Merci pour l'approche de la solution bazmegakapa
OriginalL'auteur roamcel | 2011-12-13
Vous devez vous connecter pour publier un commentaire.
inclure
global $myarray
au début desetvalue()
fonction.Mise à JOUR:
Comme indiqué dans les commentaires, c'est une mauvaise pratique et doit être évitée.
Une meilleure solution serait celle-ci: https://stackoverflow.com/a/17094513/3407923.
$GLOBALS
).peut-être setvalue(&$montableau) ?
Je dirais simplement
setvalue($value)
, le tableau ne devrait pas être applicable à la classe. Il reçoit juste une valeur. Mais nous ne savons pas la logique d'application.Je suis ce marquage comme la solution, car techniquement c'est la bonne réponse à ma question. Toute personne lisant ce, dans l'avenir, veuillez noter qu'une telle approche devrait être évitée si possible.
Pouvons-nous avoir un montage qui pointe vers une meilleure pratique alternative?
OriginalL'auteur Nick Shvelidze
dans une classe, vous pouvez utiliser une variable globale avec
$GLOBALS['varName'];
OriginalL'auteur macjohn
La construction d'une nouvelle classe singleton utilisé pour stocker et accéder à des variables que vous souhaitez utiliser ?
OriginalL'auteur jbrtrnd
Dans la classe que vous pourriez utiliser $GLOBALS['myarray'].
oui, c'est fait, mais comme $GLOBALS
OriginalL'auteur djot
Pourquoi ne pas vous suffit d'utiliser les getter et setter pour cela?
est-ce une solution pour ma question ici stackoverflow.com/questions/33613200/... ? Merci
OriginalL'auteur Amelia