Kandinski
Kandinski

Reputation: 983

PHP: Is it necessary to change variable names when passing them to a function?

I have a body function and a function called within the first one.

As can be seen below I don't change the parameters name while using in the second function.

Is it necessary to change the params names for use inside _display_bar();? What are the side effects if I don't?

    function main_func($form, &$form_state, $key, $code) {
    $output = '';
    ...
    $output .= _display_navbar($trans, $status_names);

    return $output
    }

    function _display_navbar($trans, $status_names) {
     $trans = 'bla';
     $status_names = 'another bla';
   $bar = $trans . ':' .$status_names;
     return $bar;
    };

Upvotes: 0

Views: 129

Answers (4)

mark
mark

Reputation: 354

It actually does not matter. But you better should not have the same names - it is confusing. Let me give you an example. $s will have 3 after the first function call to sum; 7 after the second function call to sum. The parameters did not have the same name as the function parameter names.

To answer your question fully - there are absolutely no side effects.

function main()
{
    $a = 1;
    $b = 2;
    $s = sum($a, $b);

    $d = 3;
    $e = 4;
    $s = sum($d, $e);
}

function sum($first, $second) 
{
    $ret = $first + $second;
    return $ret;
}

Upvotes: 1

Alnitak
Alnitak

Reputation: 339786

The names you pass as function arguments must be in scope at the point they are called.

It doesn't matter if they have the same name as the formal function parameters, but you must recognise that just because they have the same name doesn't mean that brings them into scope.

So, in your code:

function main_func($form, &$form_state, $key, $code) {
    $output = '';
    ...
    $output .= _display_navbar($trans, $status_names);

the last line will be incorrect, unless $trans and $status_names are in scope at the time.

Upvotes: 1

Ozzy
Ozzy

Reputation: 10643

Once a variable is passed to a function, the name of the variable is not important. Only the data is passed through. So your function could be this:

function _display_navbar($foo, $bar) {
   $foo = 'bla';
   return $bar;
}

And it will return what ever was passed as the second parameter regardless of what the variable name was.

Upvotes: 1

deceze
deceze

Reputation: 521995

Variables have function scope. Unless you specifically declare otherwise, the names are only valid inside the function. They do not bleed into other scopes. There are no side effects. You don't need to use unique names.

Upvotes: 2

Related Questions