Inicializovat globální proměnné v PHP

hlasů
2

Je to dobré praxe pro inicializaci globální proměnné v PHP? Fragment kódu, zdá se, že funguje, ale je to lepší pro inicializaci (ve větším projektu, řekněme pro výkon zájmu) variabilní vnější funkce, stejně jako ve druhém nuly kódu?

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;
};

Všimněte si, že proměnné $ Alert výše není inicializován.

$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;
};

Nyní si všimnout, že je.

Vážím žádné odpovědi! Díky předem, Jay

Položena 23/07/2009 v 12:03
zdroj uživatelem
V jiných jazycích...                            


6 odpovědí

hlasů
3

Ve druhém příkladu jste stále není deklarování proměnné, řádek

$alert;

nepřiděluje $alerthodnotu, takže to zůstává nehlášená.

Pokud deklarovat proměnnou jako první, můžete k nim přistupovat mnohem snadněji bez generování upozornění:

$alert = '';

if ($alert) {
    //do something with alert
}
Odpovězeno 23/07/2009 v 12:08
zdroj uživatelem

hlasů
2

Je to dobré praxe pro inicializaci globální proměnné v PHP?

Podle mého názoru (a nejsem jediný, myšlení, že) , je dobrým zvykem nepoužívat globální proměnné.

Můžete najít několik argumentů zde .

Pokud opravdu potřebujete používat globální proměnné, i když je to asi lepší je inicializovat; nebo použít issetk určení, pokud jste byli.

Odpovězeno 23/07/2009 v 12:07
zdroj uživatelem

hlasů
1

Nepoužívají globální proměnné, jsou špatné parctice a nebudou dostupné v PHP6. Potřebujete-li hodnoty dostupné přes Stránky / tříd, proč si vytvořit třídu výčtu? Podívejte se na příklad zde: http://riccardotacconi.blogspot.com/2009/05/enumerator-class-in-php.html

Basicaly zahrnout třídu a dostanete hodnotu tímto způsobem: QYourClass :: Alert

Odpovězeno 23/07/2009 v 15:04
zdroj uživatelem

hlasů
1

No, pomocí proměnné, která nebyla inicializována spustí oznámení v PHP, takže inicializace proměnných je vždy lepší než to jejich inicializaci.

Odpovězeno 23/07/2009 v 12:07
zdroj uživatelem

hlasů
0

Podle této stránce globální proměnné nejsou zrušeny v PHP6, ale spíše registrovat globální proměnné . Globální proměnné mají řadu využití (některé z nich jsou dobrým zvykem, některé nejsou) a jsou v podstatě bezpečné. Registrovat globals představují závažný bezpečnostní mezera a to právem byla ukončena.

Odpovězeno 23/02/2011 v 16:16
zdroj uživatelem

hlasů
-1

Nemyslím si, že je to proveditelné, takže jsem to sešrotování. Globální proměnné jsou spadl do PHP6 a konstantní, samozřejmě nemohou mít to hodnota změnila. Díky všem, oceňuji každou odpověď a všem, kteří přispěli.

Odpovězeno 24/07/2009 v 10:02
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more