Einzelnen Beitrag anzeigen
Alt 19.07.2004, 18:16  
Basti
Erfahrener Benutzer
 
Registriert seit: 18.07.2004
Beiträge: 2.162
PHP-Kenntnisse:
Fortgeschritten
Basti
Standard

Ich stand kürzlich auch vor dem Problem und habs dann aufgegeben. Wenn du eine Lösung hast, dann poste mal. Ich denke aber, es scheitert einfach an er Unmöglichkiet, eine Referenz auf NULL zu bekommen.

Hier hab ich mal ein wenig rumgespielt:
PHP-Code:
<?php
function foo($args = array())
{
    
$backtrace debug_backtrace();
    echo 
"Die Funktion {$backtrace[1]['function']} wurde mit folgenden Parametern aufgerufen:<pre>";
    
var_dump($args);
    echo 
'</pre>';
}

function 
bar() 
{
    
foo(func_get_args());
}

function 
baz($test)
{
    
foo(func_get_args());
}

echo 
'<h1>Aufruf mit "normalen" Parametern aus der einen Funktion</h1>';
bar ('x', array('y''z'), dir('.'));

echo 
'<h1>...und aus der anderen Funktion heraus</h1>';
baz (0falseNULL);


echo 
'<h1>Passing by Reference bei fest definierter Anzahl der Argumente</h1>';

function 
foo1 (&$arg)
{
    
$arg 42;    


function 
bar1 (&$arg)
{
    
foo1($arg);
}

$test 17;
bar1($test);
echo 
"Wert wird erfolgreich geaendert: $test";

echo 
'<h1>Passing by Reference bei variabler Anzahl der Argumente</h1>';

function 
foo2 (&$args)
{
    
$args[0] = 42;    


function 
bar2 (&$arg1)
{
    
foo2(func_get_args());
}

$test 17;
bar2($test);
echo 
"Hier gehen die Referenzen natuerlich floeten: $test";

echo 
'<h1>Workaround</h1>';
echo 
'kann natuerlich nicht gehen, da du keine Referenz auf NULL haben kannst';

function 
foo3 (&$arg1, &$arg2, &$arg3, &$argn)
{
    
$arg1 42;
}


function 
bar3 (&$arg)
{
    
foo3($arg);
}

$test 17;
bar3($test);
?>
Basti ist offline   Mit Zitat antworten