Resumo : neste tutorial, você aprenderá sobre os argumentos nomeados do PHP e como usá-los de maneira eficaz em seu código.
Introdução aos argumentos nomeados do PHP
Desde o PHP 8.0, você pode usar argumentos nomeados para funções. Os argumentos nomeados permitem que você passe argumentos para uma função com base nos nomes dos parâmetros , em vez das posições dos parâmetros.
O exemplo a seguir define uma função que encontra a posição da primeira ocorrência de uma substring em uma string:
<?php
function find($needle, $haystack)
{
return strpos($haystack, $needle);
}
Linguagem de código: HTML, XML ( xml )
Para chamar a find()
função, você passa os argumentos com base nas posições dos parâmetros como este:
find('awesome', 'PHP is awesome!');
Linguagem de código: JavaScript ( javascript )
Neste caso, $needle
é 'awesome'
e $haystack
é 'PHP is awesome!'
.
No entanto, a chamada de função não é aparente. Por exemplo, você não sabe qual argumento é a agulha e qual argumento é o palheiro.
Às vezes, você pode cometer um erro acidentalmente ao passar os argumentos na ordem errada. Por exemplo:
find (
'PHP is awesome!',
'awesome'
);
Linguagem de código: JavaScript ( javascript )
Isso é problemático e muito difícil de solucionar.
Para evitar isso, você pode adicionar comentários aos argumentos como este:
find (
'awesome', // needle
'PHP is awesome!' // haystack
);
Linguagem de código: JavaScript ( javascript )
O comentário torna o código mais claro. No entanto, não é robusto.
Para melhorar isso, o PHP 8.0 introduziu os argumentos nomeados que permitem especificar os nomes dos parâmetros ao passar argumentos:
find (
$needle : 'awesome',
$haystack : 'PHP is awesome!'
);
Linguagem de código: PHP ( php )
Como você está usando os nomes dos parâmetros, as posições não são necessárias. Por exemplo, você pode trocar os parâmetros assim:
find(
$haystack :'PHP is awesome!',
$needle : 'awesome'
);
Linguagem de código: PHP ( php )
Deve funcionar corretamente.
Ignorando argumentos padrão
O seguinte define uma função que cria um elemento âncora ( <a>
) a partir de texto, href, título e destino:
<?php
function create_anchor(
$text,
$href = '#',
$title = '',
$target = '_self'
)
{
$href = $href ? sprintf('href="%s"', $href) : '';
$title = $title ? sprintf('title="%s"', $title) : '';
$target = $target ? sprintf('target="%s"', $target) : '';
return "<a $href $title $target>$text</a>";
}
Linguagem de código: HTML, XML ( xml )
Para criar um link com o alvo é _blank
, você deve especificar todos os argumentos padrão até aquele que deseja alterar. Por exemplo:
$link = create_anchor(
'PHP Tutorial',
'https://tutorials.acervolima.com/tutorial-de-php',
'',
'_blank'
);
echo $link;
Linguagem de código: PHP ( php )
Saída:
<a href="https://tutorials.acervolima.com/tutorial-de-php" target="_blank">PHP Tutorial</a>
Linguagem de código: HTML, XML ( xml )
Neste exemplo, você precisa passar o espaço (”) para o terceiro argumento. Se você usar os argumentos nomeados, não será necessário especificar todos os padrões. Por exemplo:
$link = create_anchor(
text : 'PHP Tutorial',
href : 'https://tutorials.acervolima.com/tutorial-de-php',
target: '_blank'
);
Linguagem de código: PHP ( php )
Misturando argumentos nomeados com argumentos posicionais
PHP permite que você chame uma função usando argumentos posicionais e argumentos nomeados. E você precisa colocar os argumentos nomeados após os argumentos posicionais. Por exemplo:
$link = create_anchor(
'PHP Tutorial',
'https://tutorials.acervolima.com/tutorial-de-php',
target: '_blank'
);
Linguagem de código: PHP ( php )
Neste exemplo:
- O
text
é'PHP Tutorial'
. - O
href
é'https://tutorials.acervolima.com/tutorial-de-php'
. - E o
target
é'_blank'
.
Se você colocar os argumentos nomeados antes dos argumentos posicionais, receberá um erro. Por exemplo:
create_anchor(
target : '_blank',
'PHP Tutorial',
'https://tutorials.acervolima.com/tutorial-de-php'
);
Linguagem de código: JavaScript ( javascript )
Erro:
Cannot use positional argument after named argument
Linguagem de código: PHP ( php )
Resumo
- Use argumentos nomeados do PHP para passar argumentos para uma função com base nos nomes dos parâmetros.
- Coloque os argumentos nomeados após os argumentos posicionais nas chamadas de função.