Frage zu get_defined_constants()

xtramen01

Erfahrenes Mitglied
Hallo,

ist es auch möglich sich die Konstanten mit der Funktion "get_defined_constants()" , nur von bestimmten Dateien ausgeben zu lassen?

Meine Struktut sieht nämlich wie folgt aus:

PHP:
include('defines_1.php');
include('defines_3.php');
include('defines_4.php');

$constantArr = get_defined_constants(true);

$c = 1;

foreach ($constantArr as $firstKey => $firstValue) {
    if ($firstKey == "user") {
        foreach ($firstValue as $userKey => $userValue) {

            //echo $userKey . ' = ' . $userValue . '<br />';
            $outDEValues .= $userKey." = \"".$userValue."\"\n";

        }
    }
}

Und ich brauche lediglich die Konstanten aus einer Datei.

Jemand ne Idee?

Gruss
 
Direkt eine Funktion kenn ich nicht.

Aber man kann beim include die Differenzen bilden
PHP:
<?php 
$const0 = get_defined_constants(true);
$const0 = (is_array($const0['user'])) ? $const0['user'] : array();
include('defines_1.php');
$const1 = get_defined_constants(true);
$const1 = (is_array($const1['user'])) ? $const1['user'] : array();
include('defines_2.php');
$const2 = get_defined_constants(true);
$const2 = (is_array($const2['user'])) ? $const2['user'] : array();
include('defines_3.php');
$const3 = get_defined_constants(true);
$const3 = (is_array($const3['user'])) ? $const3['user'] : array();

$const3 = array_diff_key($const3, $const2); 
$const2 = array_diff_key($const2, $const1);
$const1 = array_diff_key($const1, $const0);

var_dump($const1, $const2, $const3);

?>

Nun, wenn man das ganze in eine Funktion bastelt, kann man beim include die User-Constanten der Datei gleich mit auslesen:
PHP:
<?php 

function getUserConstants(){
    $constants = get_defined_constants(true);
    return (is_array($constants['user'])) ? $constants['user'] : array();
}

function includeWithGetConstances($filepath){
    $constBevore = getUserConstants();
    include($filepath);
    $constAfter = getUserConstants();
    return array_diff_key($constAfter, $constBevore);
}

include('defines_1.php');
$const2 = includeWithGetConstances('defines_2.php');
include('defines_2.php');

var_dump($const2);

?>
 
Zurück