isset (), PHP Globale Variable
Ich habe eine Frage zu globalen Variablen-Initialisierung.
function hello_testing() {
global $conditional_random;
if (isset($conditional_random)) {
echo "foo is inside";
}
}
Die Globale variable (conditional_random) kann nicht initialisiert werden, bevor die hello_testing()
- Funktion aufgerufen wird.
So, was passiert mit meinen Validierung über isset()
wenn $conditional_random
ist nicht initialisiert? Wird es nicht oder es wird immer wahr sein?
Auf einer seitlichen Anmerkung, versuchen zu bleiben Weg von global. Es ist ein Sicheres Zeichen für spaghetti-code
Ich bin damit einverstanden, aber wenn Sie entwickeln in der WordPress-community (als ein Beispiel) es ist mehr oder weniger unmöglich, zu bleiben Weg von globalen Variablen oder einer Reihe von anderen schlechten Konventionen. Meiner Meinung nach, wenn Sie die Arbeit mit PHP in den ersten Platz, Sie haben resigniert, sich selbst zu tolerieren schlechte programmierpraktiken und müssen nur wissen, relativ sichere Wege, um mit zu arbeiten, was du hast.
Ich bin damit einverstanden, aber wenn Sie entwickeln in der WordPress-community (als ein Beispiel) es ist mehr oder weniger unmöglich, zu bleiben Weg von globalen Variablen oder einer Reihe von anderen schlechten Konventionen. Meiner Meinung nach, wenn Sie die Arbeit mit PHP in den ersten Platz, Sie haben resigniert, sich selbst zu tolerieren schlechte programmierpraktiken und müssen nur wissen, relativ sichere Wege, um mit zu arbeiten, was du hast.
InformationsquelleAutor justjoe | 2010-04-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gut, warum gehst du nicht einfach mal testen ? 😉
Hinweis : Nicht so einfach, als würden Sie denken-Lesen Sie die vollständige Antwort 😉
Aufruf der
hello_testing();
- Funktion, ohne einstellen der Variablen :Bekomme ich keine Ausgabe -- die gibt
isset
zurückgegebenfalse
.Aufruf der Funktion nach dem festlegen der Variablen :
Bekomme ich eine Ausgabe :
Welche gibt
global
wie erwartet funktioniert, wenn die variable gesetzt ist -- nun, man sollte keine Zweifel haben, dass ^^ABER beachten Sie, dass
isset
zurückfalse
wenn eine variable gesetzt ist, undnull
!Finden Sie die manual page von
isset()
Was bedeutet, dass ein besserer test wäre :
- Und diese zeigt :
Nein Hinweis : die variable existiert ! Auch wenn
null
.Da ich nicht die variable außerhalb der Funktion, es zeigt, dass
global
setzt die variable-aber es hat keinen Wert ; was bedeutet, es istnull
wenn nicht bereits außerhalb der Funktion.Während :
Gibt :
Beweist, dass Benachrichtigungen aktiviert sind 😉
Und, wenn global nicht "set" die variable aus dem vorherigen Beispiel hätte angesichts der gleichen Begründung.
Und schließlich :
Gibt :
(Rein, um zu demonstrieren, dass mein Beispiel nicht betrogen ^^ )
InformationsquelleAutor Pascal MARTIN
Können Sie überprüfen, um zu sehen, ob die global erstellt wurde, indem Sie prüfen, ob der Schlüssel vorhanden ist, der in $GLOBALS:
Dies ist die einzige Möglichkeit, die ich kenne, um zu überprüfen, die Existenz einer globalen ohne triggerzeit eine Warnung.
Als Manos Dilaverakis erwähnt, sollten Sie vermeiden, mit globals, Wann immer möglich.
InformationsquelleAutor Omn
Global
setzt die variable. Daherisset($some_globald_variable)
wird immer true zurück.Die bessere option ist
empty()
if
Aussage 🙂Die variable nicht erstellt, aber es ist null initialisiert. isset gibt false zurück gegeben, eine variable mit einem null-Wert.
stimmt, diese Antwort ist falsch
Diese Antwort ist ganz falsch. Zusätzlich zu dem, was @Ziege sagte, die 'leere' Funktion gibt true zurück für falsch-wie Werte wie ", [ ], 0, false
InformationsquelleAutor Tyler Carter