2013-06-13 18 views
7

Sono molto nuovo alle classi PHP quindi perdonami se la risposta è davvero ovvia. Sto cercando di capire come utilizzare una variabile definita al di fuori di una classe all'interno di una classe. Ecco un esempio molto grezzoUsa variabile esterna all'interno della classe PHP

$myVar = 'value'; 

class myClass { 
    private $class_var = $myVar; 
    //REST OF CLASS BELOW 
} 

So che quanto sopra non funziona, ma come posso usare il $ myVar esterna all'interno della classe?

+0

passarlo al costruttore? –

+0

Potresti darmi un esempio? Come ho detto, sono molto nuovo alle lezioni, quindi sto ancora imparando i dettagli. –

+0

un esempio è sotto, se vuoi ottenere la variabile, puoi fare un metodo di valutazione per esso –

risposta

12

Prova questa:

$myVar = 'value'; 

class myClass { 
    private $class_var; 

    public function __construct($myVar) { 
    $this->class_var=$myVar; 
    } 

    //REST OF CLASS BELOW 
} 

Quando si dichiara la classe, sarà necessario passare $myVar in questo modo, $myClass = new myClass($myVar);.

+0

cosa fa questo? quindi puoi passarlo al costruttore quando crei l'oggetto ... garantito ... ma questo non è vero? –

+2

ora 'myClass' può usare' $ this-> class_var' normalmente? –

+0

Non penso che sia quello che vuoi. vedi commento sopra. –

-3

Ogni funzione ha il suo "ambito". È possibile ignorare che dichiarando una variabile come globale all'interno della funzione in questo modo:

$myVar = 'value'; 

class myClass { 
    public function __construct() { 
    global $myVar; 
    $this->class_var=$myVar; 
    } 
} 

questo imposterà variabile nella istanza di oggetto.

Tuttavia sappiate che è possibile utilizzare direttamente nelle funzioni senza la necessità di impostare come variabile di classe in questo modo:

$myVar = 'value'; 

class myClass { 
    public function myfunction() { 
    global $myVar; 
    echo $myVar; 
    } 
} 
+2

Si consiglia di leggere questo: http://stackoverflow.com/questions/11923272/use-global-variables-in-a-class/11923384#11923384 – PeeHaa

+0

@PeeHaa 埽 Che è Una risposta così approfondita, ho votato affinché questa domanda sia chiusa come duplicato di quella piuttosto che ripetere la discussione. – IMSoP

+0

@IMSoP Grazie! – PeeHaa

Problemi correlati