wake-up-neo.net

php - Beste Möglichkeit, globale Konstante zu definieren (in allen Dateien verfügbar)

Was ist der beste Weg, um eine Konstante zu definieren, die Global ist? Das heißt, es sollte in allen Dateien in PHP vorhanden sein.

Vielen Dank

UPDATE: Was sind die Unterschiede zwischen den Konstanten und Klassenkonstanten? Können sie austauschbar verwendet werden?

18
cldy1020

Definieren Sie Ihre Konstante in Ihrer top .php-Datei, die in allen anderen Skripts enthalten ist. Es kann sich dabei um Ihren Front-Controller, Ihre Konfigurationsdatei oder um eine für diesen Zweck erstellte Datei handeln.

define('MY_CONST', 'hello');
20
Samy Dindane

mach Folgendes:

define("CONSTANT_NAME","value");

wenn Sie von anderen PHP-Dateien auf diese Konstante zugreifen möchten, müssen Sie sie einschließen:

include_once("thefilewiththeconstant.php");
8
Sebastian Breit

Wenn Sie globale Konstanten in PHP -Dateien verwenden möchten, empfiehlt es sich, objektorientierte Prinzipien zu verwenden und diese in relevanten Klassen zu definieren. Mit der in PHP integrierten Funktion spl_autoload_register () können Sie alle Ihre späteren Klassen definieren, um die zugehörige "Globals-Klasse" zu erweitern, ohne sich Gedanken machen zu müssen, Dateien überall manuell einzubinden. Alle späteren untergeordneten Klassen dieser Globals-Klasse haben immer Zugriff auf die zugehörigen globalen Variablen. (Ich sage verwandt, weil es ein gutes Design ist, globale Konstanten in einer Klasse auf irgendeine Weise miteinander zu verknüpfen, anstatt alles, was ohne Reim oder Grund zusammengruppiert ist).

1
user6659166

Überprüfen Sie dies

<?php
//Global scope variables
$a = 1;
$b = 2;

 function Sum()
 {
global $a, $b;

$b = $a + $b;
 } 

Sum();
echo $b;
?>
1

Besser ist es, zu prüfen, ob die Konstante irgendetwas zugewiesen ist, und wenn sie nicht irgendetwas zugewiesen ist, ordnen Sie sie zu. Andernfalls weisen Sie sie NULL zu und weisen Sie sie Ihrer Konstanten zu

defined("FOO") ? null : define("FOO", "BAR");
0
Rust

Unabhängig von der Datei, in der Sie Ihre Konstante (n) erstellen, müssen Sie sie in die Dateien einbeziehen, die Sie verwenden werden.

Andernfalls können Sie das globale $ _SESSION verwenden. Dies erfordert jedoch die Initialisierung der Sitzung durch session_start() am Anfang Ihres Codes in jeder dieser Dateien.

0
inhan

Es hängt davon ab, ob. In Ihrer Situation würde ich define() wählen, weil sie eine kompaktere Syntax verwendet. define() kann jedoch nur Skalarwerte in PHP <7.0 enthalten. Falls Sie ein assoziatives Array benötigen, haben Sie keine andere Wahl, als $GLOBALS zu verwenden oder PHP> = 7.0 zu verwenden. 

// Storing a single value works fine with define
define( 'ROOT_DIR', dirname(dirname(__FILE__)) . '/' );

// But not for complex data types like this array
$USERPIC_PARAMS = array(
            "user_root"       => "images/users",
            "padding_length"    => 8,
            "split_length"      => 4,
            "hash_length"         => 12,
            "hide_leftover"     => false
    );

// Then you need $GLOBALS
$GLOBALS['USERPIC_PARAMS']  = $USERPIC_PARAMS;
// Or in PHP >=7.0
define( 'USERPIC_PARAMS', $USERPIC_PARAMS );

// output your define
echo ROOT_DIR;
// output your $GLOBALS var
echo $GLOBALS['USERPIC_PARAMS'];
// output in PHP >=7.0 your constant
echo USERPIC_PARAMS;
0
Hexodus