Howto re-pass arguments?
am 21.10.2007 08:48:04 von zapzap
Hello :-)
Is it possible to pass all arguments to another function?
function A()
{
B(func_get_args());
}
function B()
{
var_dump(func_get_args());
}
I dont know how many arguments will come for A, and i want
A to handle them transparent and pass all to B.
Now i'm doing this with func_get_args but I get
an array ob B's input. original arguments would be
better. Is this possible in any way?
TIA 8-)
Re: Howto re-pass arguments?
am 21.10.2007 09:11:56 von Shion
zapzap wrote:
> Hello :-)
>
> Is it possible to pass all arguments to another function?
>
> function A()
> {
> B(func_get_args());
> }
>
> function B()
> {
> var_dump(func_get_args());
> }
>
>
> I dont know how many arguments will come for A, and i want
> A to handle them transparent and pass all to B.
> Now i'm doing this with func_get_args but I get
> an array ob B's input. original arguments would be
> better. Is this possible in any way?
function b($array) {
if(is_array($array)) {
foreach($array AS $var) {
var_dump($var);
}
} else {
var_dump($array);
}
}
--
//Aho
Re: Howto re-pass arguments?
am 21.10.2007 09:22:52 von zapzap
J.O. Aho wrote:
> zapzap wrote:
>> Hello :-)
>> Is it possible to pass all arguments to another function?
>> function A()
>> {
>> B(func_get_args());
>> }
>>
>> function B()
>> {
>> var_dump(func_get_args());
>> }
>> I dont know how many arguments will come for A, and i want
>> A to handle them transparent and pass all to B.
>> Now i'm doing this with func_get_args but I get
>> an array ob B's input. original arguments would be
>> better. Is this possible in any way?
> function b($array) {
> if(is_array($array)) {
> foreach($array AS $var) {
> var_dump($var);
> }
> } else {
> var_dump($array);
> }
> }
No no no ;-) My fault, see this:
//
function A()
{
B(); // THIS NEEDS TO BE CHANGED PROBLY :>
}
//
function B()
{
var_dump(func_get_args());
}
So, I will NEVER call B directly, i'll always call A
an A will call B for me.
B is loaded/generated dynamicaly, so one time B requires
2 arguments, sometimes 5 arguments. As i said i will
only call A, sometimes A($var1,$var2,$var3), other
A($var1). How can I tell A to pass all its
arguments to B - WITHOUT having them as an array (as result
of fun_get_args in my previous posting).
I hope this is clear now ;-) sorry for my english
Re: Howto re-pass arguments?
am 21.10.2007 09:46:32 von Shion
zapzap wrote:
> J.O. Aho wrote:
>> zapzap wrote:
>>> Hello :-)
>>> Is it possible to pass all arguments to another function?
>>> function A()
>>> {
>>> B(func_get_args());
>>> }
>>>
>>> function B()
>>> {
>>> var_dump(func_get_args());
>>> }
>>> I dont know how many arguments will come for A, and i want
>>> A to handle them transparent and pass all to B.
>>> Now i'm doing this with func_get_args but I get
>>> an array ob B's input. original arguments would be
>>> better. Is this possible in any way?
>> function b($array) {
>> if(is_array($array)) {
>> foreach($array AS $var) {
>> var_dump($var);
>> }
>> } else {
>> var_dump($array);
>> }
>> }
>
> No no no ;-) My fault, see this:
>
> //
> function A()
> {
> B(); // THIS NEEDS TO BE CHANGED PROBLY :>
> }
>
> //
> function B()
> {
> var_dump(func_get_args());
> }
>
>
> So, I will NEVER call B directly, i'll always call A
> an A will call B for me.
If you want the arguments that are used when you call function A(), you need
to use func_get_args() in function A(), so you would need to use
b(func_get_args()). As you see from b(), it won't present your variables
inside a array.
--
//Aho
Re: Howto re-pass arguments?
am 21.10.2007 09:57:48 von zapzap
J.O. Aho wrote:
> If you want the arguments that are used when you call function A(), you need
> to use func_get_args() in function A(), so you would need to use
> b(func_get_args()). As you see from b(), it won't present your variables
> inside a array.
Ok, thanks :-) Array is not bad, but I thought I could
do this in a more "transparent" way, without "touching"
the arguments.
Re: Howto re-pass arguments?
am 21.10.2007 13:55:41 von Thomas Mlynarczyk
Also sprach zapzap:
> Is it possible to pass all arguments to another function?
Yes: http://de2.php.net/call_user_func_array.
function A()
{
$tmp = func_get_args();
return call_user_func_array( 'B', $tmp );
}
function B() { /* do something */ }
BTW, you cannot pass func_get_args() directly as a parameter to
call_user_func_array(), as PHP will get confused and report an error.
Therefore, it is necessary to go via the $tmp variable.
Greetings,
Thomas
--
C'est pas parce qu'ils sont nombreux a avoir tort qu'ils ont raison!
(Coluche)
Re: Howto re-pass arguments?
am 21.10.2007 16:08:57 von zapzap
Thomas Mlynarczyk wrote:
> Also sprach zapzap:
>> Is it possible to pass all arguments to another function?
> Yes: http://de2.php.net/call_user_func_array.
> function A()
> {
> $tmp = func_get_args();
> return call_user_func_array( 'B', $tmp );
> }
> function B() { /* do something */ }
> BTW, you cannot pass func_get_args() directly as a parameter to
> call_user_func_array(), as PHP will get confused and report an error.
> Therefore, it is necessary to go via the $tmp variable.
Great! Thanks! Danke! This solves my problem permanently 8-)