Recipe 6.2 Accessing Function Parameters
6.2.1 Problem
You
want to access the values passed to a function.
6.2.2 Solution
Use the names from the function prototype:
function commercial_sponsorship($letter, $number) {
print "This episode of Sesame Street is brought to you by ";
print "the letter $letter and number $number.\n";
}
commercial_sponsorship('G', 3);
commercial_sponsorship($another_letter, $another_number);
6.2.3 Discussion
Inside the function, it
doesn't matter whether the values are passed in as
strings, numbers, arrays, or another kind of variable. You can treat
them all the same and refer to them using the names from the
prototype.
Unlike in C, you don't need to (and, in fact,
can't) describe the type of variable being passed
in. PHP keeps track of this for you.
Also, unless specified, all
values being passed into and out of a function are passed by value,
not by reference. This means PHP makes a copy of the value and
provides you with that copy to access and manipulate. Therefore, any
changes you make to your copy don't alter the
original value. Here's an example:
function add_one($number) {
$number++;
}
$number = 1;
add_one($number);
print "$number\n";
1
If the variable was passed by reference, the value of
$number would be 2.
In many languages, passing variables by reference also has the
additional benefit of being significantly faster than by value. While
this is also true in PHP, the speed difference is marginal. For that
reason, we suggest passing variables by reference only when actually
necessary and never as a performance-enhancing trick.
6.2.4 See Also
Recipe 6.4 to pass values by reference and
Recipe 6.7 to return values by reference.
|