Esiste un modo per rendere globali tutte le variabili?Rendi globali tutte le variabili, PHP
risposta
Non importa quello che stai cercando di fare, ma questo è un cattivo modo di andare su di esso. Farai molto meglio semplicemente passare le variabili come argomenti alle funzioni o dichiarandole globali lì.
ma in breve, non esiste un modo semplice per farlo senza un sacco di dichiarazioni globali.
modo rapido e sporco:
$GLOBALS += get_defined_vars();
non so se questo hack è portatile (funziona su PHP 5.3.1) e ho il sospetto gli oggetti vengono clonati.
L'oggetto non deve essere clonato , ma non funziona con l'aliasing, ma direi che è piuttosto vicino, e altre cose hanno più overhead: http://stackoverflow.com/a/10980563/367456 (Aggiunta la risposta per motivi di completezza) – hakre
penso che questo può aiutare foreach($GLOBALS as $name => $value) global $$name;
metterlo all'interno della funzione e si avrete tutte le variabili definite visibles
Per importare tutte le variabili globali incl. superglobals e contrastanti nomi dei parametri nel campo di applicazione funzioni:
extract($GLOBALS, EXTR_REFS | EXTR_SKIP);
Il problema è con il superglobals qui. Si potrebbe desiderare di escluderli, ecco un elenco (PHP 5.2):
/**
* PHP Superglobals
*/
array (
1 => 'GLOBALS',
2 => '_ENV',
3 => 'HTTP_ENV_VARS',
4 => '_POST',
5 => 'HTTP_POST_VARS',
6 => '_GET',
7 => 'HTTP_GET_VARS',
8 => '_COOKIE',
9 => 'HTTP_COOKIE_VARS',
10 => '_SERVER',
11 => 'HTTP_SERVER_VARS',
12 => '_FILES',
13 => 'HTTP_POST_FILES',
14 => '_REQUEST',
15 => 'HTTP_SESSION_VARS',
16 => '_SESSION',
)
si ottiene il parametro nomi di variabili con get_defined_vars
.
Questo è anche il motivo per cui l'opposto è meno complicato, get_defined_vars
non restituisce i superglobali, solo le variabili locali.
Il global
crea un riferimento alla variabile della portata globale, quindi è in realtà una variabile locale che è un alias per la variabile globale con lo stesso nome. Anche alcuni Vars locali si scontrano per l'esportazione, in modo da alcuni pre-precauzioni come i nomi delle variabili esoterici devono essere prese:
foreach(get_defined_vars() as ${"\x00\x00"} => ${"\x00\x01"})
{
$GLOBALS[${"\x00\x00"}] =&$${"\x00\x00"};
}
notare che, come globals
la matrice superglobale $GLOBALS
contiene i riferimenti alle variabili globali e, quindi questo crea riferimenti anche qui. Ciò è particolarmente necessario se si importa tramite global
o &$GLOBALS[...]
o extract
come sopra. Oppure, se si dispone di variabili locali che sono alias per i membri della classe privata (non farlo;)):
Esempio/Demo:
<?php
/**
* Make all variables global, PHP
* @link http://stackoverflow.com/q/1909647/367456
*/
error_reporting(~0);
function bar($goo = 1)
{
global $foo;
$foo++;
$baz = 3;
foreach(get_defined_vars() as ${"\x00\x00"} => ${"\x00\x01"})
{
$GLOBALS[${"\x00\x00"}] =&$${"\x00\x00"};
}
}
$foo = 1;
bar();
echo '$goo: ', var_dump($goo); # int(1)
echo '$foo: ', var_dump($foo); # int(2)
echo '$baz: ', var_dump($baz); # int(3)
Sei un coraggioso coraggioso ;-) +1 – PeeHaa
È possibile semplice renderli un riferimento a $ GLOBALS
foreach($GLOBALS as $k => $v)
$$k=&$GLOBALS[$k];
Spiegazione del codice:
$ GLOBLAS è un VA superglobale Riable (visibile ovunque).Fondamentalmente contiene tutte le variabili
$$ significa la variabile con il nome del valore della variabile che hai scritto
po 'strano da spiegare in una lingua straniera ecco un esempio:
$color='blue';
$blue='foo';
echo $$color;
stamperà
foo
$k=& $v;
significa che $ k è un riferimento a $ v
Questo non è davvero una buona pratica per fare tutte le variabili globali in termini di sicurezza. Per aggiungere variabili come globali dovrai aggiungere la parola chiave GLOBAL ogni volta che accederai. Un approccio alternativo è l'uso dell'array $ GLOBAL.
- 1. Rendere globali tutte le variabili
- 2. Elenca tutte le variabili globali in Node.js
- 3. Le variabili globali scherzano
- 4. Variabili globali PHP tra file
- 5. Recupero di tutte le variabili globali (javascript) in una pagina
- 6. Le variabili globali rallentare codice
- 7. La funzione php "header()" non imposta le variabili globali?
- 8. Come passare le variabili globali alle classi in PHP?
- 9. Variabili globali vs statiche in PHP
- 10. Qual è la differenza tra le variabili di sessione e le variabili globali in php?
- 11. Le variabili di istanza sono le nuove variabili globali?
- 12. ogg-c - variabili globali
- 13. Variabili globali in hadoop
- 14. Variabili globali e MPI
- 15. Catturare le variabili globali di Nashorn
- 16. JavaScript: Le variabili globali dopo Ajax richieste
- 17. Come utilizzare le variabili globali in ObjectDataSource.SelectMethod?
- 18. Le variabili globali e locali in R
- 19. In Ruby, c'è un modo per stampare tutte le variabili globali e le costanti definite/predefinite?
- 20. PowerShell Variabili globali variabili locali
- 21. Variabili globali in Dart
- 22. PHP ha bisogno di tagliare tutte le variabili $ _POST
- 23. Annulla l'impostazione di tutte le variabili nello script PHP
- 24. Come posso scaricare tutte le variabili PHP nell'ambito corrente?
- 25. Jison variabili globali
- 26. Variabili globali in R
- 27. accesso tutte le variabili locali
- 28. powershell - Rimuovi tutte le variabili
- 29. Ottieni tutte le variabili Javascript?
- 30. JavaScript ed ES6, variabili "globali"
Si prega di non :( –
Se è davvero poco pratico impostare una variabile globale in una funzione generica, è sempre possibile utilizzare l'array $ GLOBALS (cioè $ GLOBALS ['var_name']) – Bretticus