2013-03-16 8 views
10

Questa domanda sembra abbastanza semplice, ma non riesco a trovare una risposta da nessuna parte ...

All'inizio del mio script php/file Voglio creare una variabile.

$variable = 'this is my variable'; 

Voglio questa variabile che saranno disponibili entro l'intero script, in modo che tutte le classi, metodi, funzioni, inclusi gli script, ecc possono semplice chiamata questa variabile da $ variabile.

Class MyClass 
{ 
    public function showvariable() 
    { 
    echo $variable; 
    } 
} 

Le variabili $ _SESSION, $ _POST, $ _GET si comportano tutte in questo modo. Posso solo scrivere un metodo e usare $ _POST e funzionerà. ma se uso $ variabile, che ho definito all'inizio del mio script, dice "Avviso: variabile non definita: variabile in ..." Lo dice anche, quando scrivo una funzione, piuttosto che un metodo di classe .. .

ho provato a scrivere

global $variable = 'this is my variable'; 

Ma allora lo script non vorrei caricare ... "Errore HTTP 500 (Internal Server Error): è stata verificata una condizione imprevista durante il tentativo del server di soddisfare la richiesta."

Come si può rendere una variabile veramente accessibile globalmente come $ _POST?

Perché dovrei aver bisogno di questo? In particolare, prevedo di usarlo come token modulo. Nella parte superiore della pagina genero il mio token modulo come token $, nella parte inferiore della pagina lo memorizzo nella sessione. Prima di gestire qualsiasi modulo, controllo se il token SESSION corrisponde al token POST ... E poiché spesso ho più moduli sulla pagina (modulo di login nella parte superiore del browser e modulo di registrazione nel corpo principale) voglio solo renderlo conveniente e chiama $ token su ogni modulo. A volte i miei moduli sono generati da classi o funzioni, ma non riconoscono la variabile e dicono che non è definita.

+0

what do u dire con "Ma allora lo script non sarebbe caricare ..." –

+0

Dipende dal contesto. In che caso hai bisogno di un valore globale? – Tchoupi

+1

http://www.php.net/manual/en/reserved.variables.globals.php – Musa

risposta

13

l'ho trovato ... -.- ho pensato che sarebbe stato abbastanza facile ...

devo chiamare alla variabile utilizzando

$GLOBALS['variable']; 

appena trovato ... finalmente ... http://php.net/manual/en/reserved.variables.globals.php

EDIT come 8 mesi dopo o giù di lì:

ho appena imparato a conoscere COSTANTI!

define('name', 'value'); 

Essi non possono essere riassegnati ... Credo che potrei usare anche quello! http://www.php.net/manual/en/language.constants.php

+0

Strano, ma questo non funziona per me, mentre sto cercando di usare una costante di tipo per tutte le funzioni nel mio script. – vladkras

+0

Solo una nota, l'utilizzo di variabili globali non è consigliata per codebase di grandi dimensioni perché rendono molto difficile testare parti del programma in isolamento. Al contrario, se non hai NESSUNA variabile globale e usi Dependency Injection, diventa facile testare piccole parti del programma. –

2

è necessario dichiarare globale per accedervi in ​​qualsiasi funzione campo di applicazione:

nella parte superiore dello script:

global $var; 
$var= "this is my variable"; 

nella classe

... 
public function showvariable(){ 
    global $var; 
    echo $var; 
} 
... 
+0

Grazie per la risposta! Mentre funziona perfettamente, sto cercando un modo più conveniente, in cui non devo menzionare questa variabile ogni volta che scrivo una funzione ... Voglio solo che sia lì, e chiamarla se ne ho bisogno, e non menzionare mai se non ne ho bisogno. – olli

+0

bene il modo in cui i globals funzionano in PHP (a meno che tu non voglia usare $ GLOBALS), devi menzionarlo. se non hai intenzione di usarlo, non è necessario menzionarlo, semplice come quello. – kennypu

1

In PHP, le variabili globali devono essere dichiarate come tali all'interno di ciascuna funzione in cui verranno utilizzate. Vedi: PHP Manual, section on variable scope

Ciò detto, le variabili globali sono spesso una cattiva idea e nella maggior parte dei casi c'è un modo per evitarne l'uso.

+0

Grazie per la risposta. Ho trovato anche questo articolo, ma si riferiva a come accedere alle variabili DOPO che erano state elaborate o create in una funzione o classe. Il mio problema è che voglio accedere a una variabile in una funzione o classe, e la variabile è stata dichiarata PRIMA che la funzione è stata dichiarata. – olli

7

Basta definire una variabile all'esterno di qualsiasi classe o funzione. Quindi utilizza la parola chiave global all'interno di qualsiasi classe o funzione.

<?php 

// start of code 

$my_var = 'Hellow Orld'; 

function myfunc() { 
    global $my_var; 
    echo $my_var; // echoes 'Hellow Orld'; 
} 

function myOtherFunc() { 
    var $my_var; 
    echo $my_var; // echoes nothing, because $my_var is an undefined local variable. 
} 


class myClass { 

    public function myFunc() { 
    global $my_var; 
    echo $my_var; // echoes 'Hellow Orld'; 
    } 

    public function myOtherFunc() { 
    var $my_var; 
    echo $my_var; // echoes nothing. 
    } 

} 

myFunc(); // "Hellow Orld" 
myOtherFunc(); // no output 
myClass->myFunc(); // "Hellow Orld" 
myClass->myOtherFunc(); // no output 

// end of file 
?> 
Problemi correlati