Initialisieren Sie Globale Variablen in PHP
Ist es gute Praxis, initialisiert eine Globale variable in PHP? Das code-snippet scheint zu funktionieren, aber ist es besser, sich zu initialisieren (in einem größeren Projekt, sagen: für Leistung sake) die variable außerhalb der Funktion, wie in der zweiten scratch-code?
if(isset($_POST["Return"]))Validate();
function Validate(){
(!empty($_POST["From"])&&!empty($_POST["Body"]))?Send_Email():Fuss();
};
function Send_Email(){
global $Alert;
$Alert="Lorem Ipsum";
mail("","",$_POST["Body"],"From:".$_POST["From"]);
};
function Fuss(){
global $Alert;
$Alert="Dolor Sit"
};
function Alert(){
global $Alert;
if(!is_null($Alert))echo $Alert;
};
Beachten Sie die variable $Alarm oben ist nicht initialisiert.
$Alert;
if(isset($_POST["Return"]))Validate();
function Validate(){
(!empty($_POST["From"])&&!empty($_POST["Body"]))?Send_Email():Fuss();
};
function Send_Email(){
global $Alert;
$Alert="Lorem Ipsum";
mail("","",$_POST["Body"],"From:".$_POST["From"]);
};
function Fuss(){
global $Alert;
$Alert="Dolor Sit"
};
function Alert(){
global $Alert;
if(!is_null($Alert))echo $Alert;
};
Nun feststellen, es ist.
Ich freue mich über jede Antworten! Vielen Dank im Voraus, Jay
InformationsquelleAutor Jay | 2009-07-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Im zweiten Beispiel sind Sie sich noch nicht deklarieren Sie die variable, die Linie
nicht zuordnen
$alert
einen Wert so bleibt es schwarzarbeit.Wenn Sie die variable deklariert haben zuerst, Sie können es sich leichter, ohne dabei Hinweise:
InformationsquelleAutor Tom Haigh
Meiner Meinung nach (und ich bin nicht der einzige, der denkt, dass), es ist eine gute Praxis, nicht verwenden Globale Variablen.
Finden Sie ein paar Argumente hier.
Wenn Sie wirklich brauchen, um verwenden Sie Globale Variablen, obwohl, ist es wahrscheinlich besser, Sie zu initialisieren, oder verwenden Sie
isset
, um zu bestimmen, wenn Sie haben.isset nicht ein guter Weg zu gehen, globals zu tun just-in-time, und so isset auf globals generell gibt null zurück, denn das ist, wie Ihre array-position initialisiert.
InformationsquelleAutor Pascal MARTIN
Gut, mit einer variable, die nicht initialisiert wurde, wird der trigger Benachrichtigung in php, also initialisieren von Variablen ist immer besser als nicht initialisiert.
Du bist wahrscheinlich nicht zu sehen, der bemerkt, weil Sie noch nicht aktiviert Sie auf, Sie können entweder ändern Sie Ihre php.ini-um diese zu aktivieren, oder verwenden Sie diesen Befehl ein: error_reporting(E_ALL); Der default-Wert für error_reporting neigt zu variieren mit den verschiedenen version von PHP (denke ich!). Aber es ist am besten, um es auf E_ALL, so werden Sie mehr bewusst Ihre Programmier-Fehler.
Wie vorgeschlagen habe ich angehängt, das kurze Stück code unter dem, was wir haben, bekam schon, so sehe ich noch keine Fehler! error_reporting(E_ALL); ini_set("display_errors",1);
Sie haben um es über den gesamten code.
auch error_reporting(E_ALL | E_STRICT) ist die ausführlichste Ebene Fehler.
InformationsquelleAutor smoove
Verwenden Sie keine globalen Variablen, sind eine schlechte parctice und nicht verfügbar in PHP6. Wenn Sie brauchen Werte, die zur Verfügung über Seiten/Klassen, warum gehst du nicht erstellen Sie eine enumeration-Klasse? Ein Beispiel finden Sie hier: http://riccardotacconi.blogspot.com/2009/05/enumerator-class-in-php.html
Etwar Sie Ihre Klasse und Sie bekommen den Wert in dieser Art und Weise: QYourClass::Alert
Für diejenigen, die googlen Ihren Weg hierher, PHP6 noch nie passiert, und PHP7 beinhaltet noch $GLOBALS.
InformationsquelleAutor rtacconi
Laut auf dieser Seite Globale Variablen werden nicht abgeschafft, PHP6, sondern register Globale Variablen. Globale Variablen haben eine Anzahl von Verwendungen (einige sind gute Praxis, einige sind nicht) und sind grundsätzlich sicher. Register globals sind eine ernste Sicherheitslücke und haben zu Recht veraltet.
InformationsquelleAutor Martin Q
Ich glaube nicht, dass dies machbar ist, so bin ich der Verschrottung. Globale Variablen werden verworfen wird, PHP6 und eine Konstante, die per definitionem nicht haben kann, ist es Wert sich geändert. Vielen Dank an alle, ich freue mich auf jede Antwort und alle, die dazu beigetragen haben.
InformationsquelleAutor Jay