Parâmetros de função PHP

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 $str1e $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 $str1pegará o primeiro argumento 'Welcome 'e o $str2pegará 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>; // 1Linguagem de código:  HTML, XML  ( xml )

Saída:

2
1

Como funciona.

  • Primeiro, defina a $countervariá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 $countervariável para a função.
  • Finalmente, exiba a $countervariável.

Quando você passa a $countervariável para a increase()função, a função aumenta seu valor em um. Portanto, ao exibir o valor de $counterdentro 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 $countervariável fora da função.

O que acontece é que quando você passa o $counterpara a increase()função, a função copia a $countervariável e modifica a cópia. Isso não altera a variável original. A $countervariá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>; // 2Linguagem de código:  HTML, XML  ( xml )

Saída:

2
2

Neste exemplo, a mudança da $countervariá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.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *