Resumo : neste tutorial, você aprenderá sobre os parâmetros da função e passará argumentos por valor e referência.
Introdução aos parâmetros da função PHP
Uma função pode ter zero ou mais parâmetros:
<?php
function function_name(parameter_list)
{
}
Linguagem de código: HTML, XML ( xml )
Quando uma função possui vários parâmetros, você precisa separá-los usando uma vírgula ( ,
).
O exemplo a seguir define a concat()
função que concatena duas strings em uma:
<?php
function concat($str1, $str2)
{
return $str1 . $str2;
}
Linguagem de código: HTML, XML ( xml )
A concat()
função tem dois parâmetros $str1
e $str2
.
Ao chamar a concat()
função, você precisa passar dois argumentos que correspondam aos parâmetros. Por exemplo:
<?php
function concat($str1, $str2)
{
return $str1 . $str2;
}
$greeting = concat('Welcome ', 'Admin');
echo $greeting;
Linguagem de código: HTML, XML ( xml )
Neste exemplo, o $str1
pegará o primeiro argumento 'Welcome '
e o $str2
pegará o segundo argumento 'Admin'
.
O PHP irá gerar um erro se o número de argumentos que você passa para a função for menor que o número de parâmetros. Por exemplo:
<?php
function concat($str1, $str2)
{
return $str1 . $str2;
}
$greeting = concat('Welcome');
echo $greeting;
Linguagem de código: HTML, XML ( xml )
Ao passar vários argumentos para uma função, você pode quebrar a lista de argumentos verticalmente para tornar o código mais legível assim:
<?php
function concat($str1, $str2)
{
return $str1 . $str2;
}
$greeting = concat(
'Welcome ',
'Home'
);
echo $greeting;
Linguagem de código: HTML, XML ( xml )
É uma boa prática listar os argumentos verticalmente quando a lista de argumentos for longa.
Vírgula final (,)
A partir do PHP 7.0, a lista de argumentos pode conter uma vírgula final ( ,
) que o interpretador PHP irá ignorar. Por exemplo:
$greeting = concat(
'Welcome ',
'Home',
);
Linguagem de código: PHP ( php )
A partir do PHP 8.0, você pode colocar a vírgula final (,) na lista de parâmetros assim:
function concat(
$str1,
$str2,
) {
return $str1 . $str2;
}
Linguagem de código: PHP ( php )
Passando argumentos por valores
Considere o seguinte exemplo:
<?php
$counter = 1;
function increase($value)
{
$value+= 1;
echo $value. <br>; // 2
}
// increase the counter
increase($counter);
echo $counter . <br>; // 1
Linguagem de código: HTML, XML ( xml )
Saída:
2
1
Como funciona.
- Primeiro, defina a
$counter
variável e inicialize seu valor como um. - Segundo, defina a
increase()
função que aumenta o argumento em um e o exibe. - Terceiro, chame a
increase()
função e passe a$counter
variável para a função. - Finalmente, exiba a
$counter
variável.
Quando você passa a $counter
variável para a increase()
função, a função aumenta seu valor em um. Portanto, ao exibir o valor de $counter
dentro da função, você obterá dois.
Porém, após a chamada da função, o valor do contador ainda é um. Isso significa que a increase()
função não aumenta a $counter
variável fora da função.
O que acontece é que quando você passa o $counter
para a increase()
função, a função copia a $counter
variável e modifica a cópia. Isso não altera a variável original. A $counter
variável não muda.
Quando o valor de um argumento dentro da função é alterado e não é alterado fora da função, ele é passado por valor.
Por padrão, os argumentos são passados por valores em PHP. Se quiser que uma função altere seus argumentos, você precisa passar os argumentos por referência.
Passando argumentos por referência
Para passar um argumento por referência, você acrescenta o operador ( &
) ao nome do parâmetro na definição da função assim:
<?php
$counter = 1;
function increase( &$value )
{
$value += 1;
echo $value . <br>; // 2
}
// increase the counter
increase($counter);
echo $counter . <br>; // 2
Linguagem de código: HTML, XML ( xml )
Saída:
2
2
Neste exemplo, a mudança da $counter
variável reflete tanto dentro quanto fora da função.
Resumo
- Separe os parâmetros por vírgula (
,
). Desde o PHP 8.0, a lista de parâmetros pode ter a vírgula final (,
) que o interpretador PHP ignora. - Por padrão, os argumentos são passados por valor no PHP.
- Anexe os parâmetros com um “e” comercial (
&
) para passar argumentos por referência.