66 Stimmen

DEFINE vs. Variable in PHP

Kann mir jemand den Unterschied zwischen der Verwendung von

define('SOMETHING', true);

et

$SOMETHING = true;

Und vielleicht die Vorteile des einen oder des anderen?

Ich verwende überall Variablen und sogar in einer Konfigurationsdatei, die in jede Seite eingebunden ist, verwende ich immer noch Variablen, da ich nicht sehe, warum ich die Definitionsmethode verwenden sollte.

93voto

Tyler Carter Punkte 58971

DEFINE macht eine Konstante, und Konstanten sind global und können überall verwendet werden. Sie können auch nicht umdefiniert werden, was bei Variablen möglich ist.

Normalerweise verwende ich DEFINE für Configs, weil niemand im Nachhinein daran herumpfuschen kann, und ich kann es überall ohne Global-Ling überprüfen, was die Überprüfung erleichtert.

14voto

karim79 Punkte 333786

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

Konstanten eignen sich besser für Dinge wie Konfigurationsrichtlinien, die während der Ausführung nicht geändert werden sollten. Außerdem ist der Code leichter zu lesen (und zu pflegen und weiterzugeben), wenn Werte, die konstant sein sollen, als ausdrücklich so gemacht.

9voto

Randy Greencorn Punkte 3694

Es gibt auch einen Unterschied in der Reichweite.

In dem vom ursprünglichen Poster genannten Beispiel, $SOMETHING innerhalb einer Funktion nicht zugänglich sein wird, während define('SOMETHING', true) sein wird.

7voto

user128026 Punkte 651

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

0voto

Eine Konstante ist sehr nützlich, wenn Sie von einer Funktion aus auf Daten zugreifen wollen, wie hier

<?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 verwenden, werden Sie nie den inneren Wert erhalten. Hier ist, was ich bekomme

Hinweis: Undefinierte Variable: tech in D:\xampp\htdocs\data\index.php in Zeile 8 hey du kannst mich von außerhalb der Funktion sehen

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X