in

2009-08-03 24 views
51
PHP vs Variable DEFINE

Kann jemand den Unterschied zwischen der Verwendung vonin

define('SOMETHING', true); 

und

$SOMETHING = true; 

Und vielleicht die Vorteile zwischen dem einen oder dem anderen erklären?

Ich benutze Variablen überall und sogar in einer Config-Typ-Datei, die in jeder Seite enthalten ist, ich benutze immer noch Variablen, da ich nicht sehe, warum die Define-Methode zu verwenden.

Antwort

76

DEFINE erzeugt eine Konstante und Konstanten sind global und können überall verwendet werden. Sie können auch nicht neu definiert werden, welche Variablen sein können.

Normalerweise verwende ich DEFINE für Configs, weil niemand damit nach der Tat herumhantieren kann, und ich kann es überall ohne global-ling überprüfen, für leichtere Überprüfungen.

+0

kann ich die Benutzer-ID aus der Datenbank in die Sitzung übergeben? z.B. definiere ($ _ SESSION ['user_id'], row ['id']) die Zeile ['id'] kommt aus der Datenbank –

11

Einmal definiert, kann eine 'Konstante' zur Laufzeit nicht geändert werden, während eine gewöhnliche Variablenzuweisung kann.

Konstanten sind besser für Dinge wie Konfigurationsrichtlinien, die während der Ausführung nicht geändert werden sollten. Darüber hinaus ist Code einfacher zu lesen (und & handover) zu erhalten, wenn Werte, die konstant sein sollen, explizit so gemacht werden.

6

define() erstellt eine schreibgeschützte Variable im Vergleich zu einer Standardvariablen, die Lese- und Schreibvorgänge unterstützt.

+1

nur eine Anmerkung - ich sehe nicht, wie der Begriff "schreibgeschützte Variablen" zutrifft define() - definiert als manual states eine * benannte Konstante *, was etwas ganz anderes ist. –

+0

-1: fehlerhaft, und selbst wenn es nicht wäre, wiederholt es einfach die oben genannten zwei Beiträge. – hobodave

+2

Eine Konstante ist per definitionem keine Variable (kein Wortspiel beabsichtigt) ;-) –

3

Es gibt auch einen Unterschied im Umfang.

In dem Beispiel, das das Originalposter angibt, ist $SOMETHING innerhalb einer Funktion nicht erreichbar, während define('SOMETHING', true) wird.

0

Eine Konstante ist sehr nützlich, wenn Sie Zugriff auf Daten wollen aus innerhalb einer Funktion, überprüfen Sie diese

<?php function data(){ 
define("app","hey you can see me from outside the function",false); 

$tech = "xampp"; } data(); echo $tech; echo app; ?> 

Wenn Sie eine Variable, die Sie nie hier das Innere Wert erhalten gehen wird, was ich bekommen

Notice: Undefined variable: tech in D: \ xampp \ htdocs \ data \ index.php on line 8 hey du mich von außerhalb der Funktion sehen