Ich habe so einen Code:
<?
$a="localhost";
function body(){
global $a;
echo $a;
}
function head(){
global $a;
echo $a;
}
function footer(){
global $a;
echo $a;
}
?>
Gibt es eine Möglichkeit, die globale Variable an einem Ort zu definieren und die Variable $a
in allen Funktionen gleichzeitig zugänglich zu machen ? ohne mehr zu gebrauchen global $a;
?
php
global-variables
global
LICHT
quelle
quelle
global
Schlüsselwort nicht gefällt , sollten Sie das$GLOBALS['a']
Superglobal in allen Bereichen verwenden oder den Parameter an Ihre Funktionen übergeben.Antworten:
Das
$GLOBALS
Array kann stattdessen verwendet werden:Aus dem Handbuch :
Wenn Sie über eine Reihe von Funktionen verfügen, für die einige allgemeine Variablen erforderlich sind, ist eine Klasse mit Eigenschaften möglicherweise eine gute Wahl anstelle einer globalen:
quelle
Wenn sich die Variable nicht ändert, können Sie sie verwenden
define
Beispiel:
quelle
FOOTER_CONTENT
versucht wird, Änderungen vorzunehmen? Ist es wiefinal
in Java oderconst
in C, C ++ und C #?Fügen Sie Ihre Variablen in $ GLOBALS super global Array wie hinzu
und verwenden Sie es global
oder Sie können eine Konstante verwenden, auf die im gesamten Skript zugegriffen werden kann
quelle
Wenn eine Variable außerhalb einer Funktion deklariert wird, befindet sie sich bereits im globalen Bereich. Es besteht also keine Notwendigkeit zu deklarieren. Aber von wo aus Sie diese Variable aufrufen, muss Zugriff auf diese Variable haben. Wenn Sie innerhalb einer Funktion aufrufen, müssen Sie das
global
Schlüsselwort verwenden:Die Verwendung eines globalen Schlüsselworts außerhalb einer Funktion ist kein Fehler. Wenn Sie diese Datei in eine Funktion aufnehmen möchten, können Sie die Variable als deklarieren
global
.Sie können auch verwenden
$GLOBALS
. Es ist superglobal und hat überall Zugang.Abhängig von Ihrer Wahl können Sie entweder wählen.
quelle
Diese Antwort ist sehr spät, aber ich setze eine Klasse, die Boolesche Werte, Arrays und ganzzahlige Anfangswerte als statische Variablen für den globalen Bereich enthält. Alle konstanten Zeichenfolgen werden als solche definiert.
Die
static
Schlüsselwörter müssen in der Klasse vorhanden sein, sonst werden die Variablen $ a, $ b und $ c nicht global erfasst.quelle
Sie haben dies so beantwortet, wie Sie die Frage geschrieben haben - verwenden Sie 'define'. Einmal festgelegt, können Sie eine Definition nicht mehr ändern.
Alternativ gibt es Tricks mit einer Konstante in einer Klasse, z. B. class :: constant, die Sie verwenden können. Sie können sie auch variabel machen, indem Sie der Klasse statische Eigenschaften deklarieren. Mit Funktionen können Sie die statische Eigenschaft festlegen, wenn Sie sie ändern möchten.
quelle
Sie können das Schlüsselwort
use
in Closure- Funktionen oder Lambdas ausprobieren, wenn dies Ihrer Absicht entspricht ... PHP 7.0. Nicht das ist besser, sondern nur eine Alternative.Demo | die Info
quelle
Denken wir etwas anders:
Und Sie können es verwenden und ändern, wie Sie möchten:
quelle
Was ist, wenn Sie die prozedurale Funktion anstelle der Variablen verwenden und sie an einer beliebigen Stelle aufrufen?
Normalerweise erstelle ich eine Sammlung von Konfigurationswerten und füge sie in eine Funktion mit return-Anweisung ein. Ich schließe nur das ein, wo ich den globalen Wert nutzen und eine bestimmte Funktion aufrufen muss.
quelle
$GLOBALS[]
ist die richtige Lösung, aber da es sich um Alternativen handelt, kann eine Funktion diese Aufgabe auch problemlos erledigen:quelle
Sie sollten keine Globals mehr verwenden, diese sind in PHP 5.4 nicht verfügbar.
quelle