Accesso PHP $ var esterno dall'interno di una funzione di classe
-
06-07-2019 - |
Domanda
In PHP, come si usa un $ var esterno da usare all'interno di una funzione in una classe? Ad esempio, dire $ some_external_var impostato su true e hai qualcosa come
class myclass { bla .... bla .... function myfunction() { if (isset($some_external_var)) do something ... } } $some_external_var =true; $obj = new myclass(); $obj->myfunction();
Grazie
Soluzione
Global $ some_external_var;
function myfunction() { Global $some_external_var; if (!empty($some_external_var)) do something ... } }
Ma poiché Global lo imposta automaticamente, controlla se non è vuoto.
Altri suggerimenti
Dovrai utilizzare il global
parola chiave all'interno della tua funzione, per rendere visibile la tua variabile esterna a quella funzione.
Ad esempio:
$my_var_2 = 'glop';
function test_2()
{
global $my_var_2;
var_dump($my_var_2); // string 'glop' (length=4)
}
test_2();
Puoi anche usare l'array $ GLOBALS
, che è sempre visibile, anche all'interno delle funzioni.
Ma in genere non è considerata una buona pratica usare variabili globali: le tue classi non dovrebbero dipendere da un tipo di roba esterna che potrebbe o non potrebbe esserci!
Un modo migliore sarebbe quello di passare le variabili necessarie come parametri, ai metodi stessi o al costruttore della classe ...
questo è un cattivo design del software. Perché una classe funzioni, deve essere fornita di dati. Quindi, passa quella var esterna nella tua classe, altrimenti stai creando dipendenze non necessarie.
Perché non passare questa variabile durante __construct () e subordinare il comportamento dell'oggetto durante la costruzione al valore di verità di quella variabile?
Usa setter e getter o forse una configurazione centralizzata come:
function config()
{
static $data;
if(!isset($data))
{
$data = new stdClass();
}
return $data;
}
class myClass
{
public function myFunction()
{
echo "config()->myConfigVar: " . config()->myConfigVar;
}
}
e usalo:
config()->myConfigVar = "Hello world";
$myClass = new myClass();
$myClass->myFunction();
http://www.evanbot.com/article/universally inoltre accessibili-dati-php / 24