Howto re-pass arguments?

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-)