J'ai une variable globale en dehors de ma classe = $ MyNumber;
Comment déclarer cela comme une propriété dans myClass?
Pour chaque méthode de ma classe, voici ce que je fais:
class myClass() {
private function foo() {
$privateNumber = $GLOBALS['MyNumber'];
}
}
Je veux ceci
class myClass() {
//What goes here?
var $classNumber = ???//the global $MyNumber;
private function foo() {
$privateNumber = $this->classNumber;
}
}
EDIT: Je veux créer une variable basée sur le $ global MyNumber mais
modifié avant de l'utiliser dans les méthodes
quelque chose comme: var $ classNumber = global $ MyNumber + 100;
Essayez d'éviter les globals, vous pouvez utiliser quelque chose comme ceci
class myClass() {
private $myNumber;
public function setNumber($number) {
$this->myNumber = $number;
}
}
Maintenant tu peux appeler
$class = new myClass();
$class->setNumber('1234');
Qu'en est-il de l'utilisation de constructeur?
class myClass {
$myNumber = NULL;
public function __construct() {
global myNumber;
$this->myNumber = &myNumber;
}
public function foo() {
echo $this->myNumber;
}
}
Ou beaucoup mieux de cette façon (en passant la variable globale en paramètre lorsque inicializin l'objet - en lecture seule)
class myClass {
$myNumber = NULL;
public function __construct($myNumber) {
$this->myNumber = $myNumber;
}
public function foo() {
echo $this->myNumber;
}
}
$instance = new myClass($myNumber);
Ce que j'ai expérimenté, c'est que vous ne pouvez pas affecter votre variable globale à une variable de classe directement.
class myClass() {
public $var = $GLOBALS['variable'];
public function func() {
var_dump($this->var);
}
}
Avec le code ci-dessus, vous obtenez une erreur "erreur d'analyse: erreur de syntaxe, '$ GLOBALS'"
Mais si nous faisons quelque chose comme ça,
class myClass() {
public $var = array();
public function __construct() {
$this->var = $GLOBALS['variable'];
}
public function func() {
var_dump($this->var);
}
}
Notre code fonctionnera bien.
Où nous assignons une variable globale à une variable de classe doit être à l'intérieur d'une fonction. Et j'ai utilisé la fonction constructeur pour cela.
Ainsi, vous pouvez accéder à votre variable globale dans chacune des fonctions d'une classe en utilisant simplement $ this-> var ;
Si vous souhaitez accéder à une propriété depuis une classe, vous devez:
private $classNumber = 8;
classe myClass { $ foo protégé;
public function __construct(&$var)
{
$this->foo = &$var;
}
public function foo()
{
return ++$this->foo;
}
}