as
Saiba como a palavra-chave "as" do PHP funciona em loops foreach, aliases de namespaces e resolução de conflitos em traits com exemplos práticos.
A Palavra-chave as do PHP
as é uma palavra-chave PHP pequena, mas versátil. Não é uma função e nunca aparece sozinha — ela sempre atua como um conector que atribui um nome temporário a algo. Você a encontrará em quatro contextos distintos:
- Em um loop
foreach, para vincular cada elemento (e opcionalmente sua chave) a uma variável. - Em uma instrução
use, para dar a um namespace, classe ou função importada um alias mais curto. - Em um bloco
usede trait, para criar alias ou redefinir o escopo de um método durante a resolução de conflitos. - Em
list()/ desestruturação de array dentro de umforeach(foreach ($rows as [$a, $b])).
Este guia cobre cada uso com exemplos executáveis, além dos erros comuns.
as em um loop foreach
Este é o uso que você verá com mais frequência. Dentro do foreach, as vincula o elemento atual a uma variável para o corpo do loop. Existem duas formas:
<?php
// Value only
foreach ($array as $value) {
// $value is the current element
}
// Key and value
foreach ($array as $key => $value) {
// $key is the current key, $value is the current element
}A variável após as é reatribuída a cada iteração; ela não precisa existir previamente.
Iterando valores e pares chave/valor
<?php
// Indexed array — value only
$names = ["John", "Doe"];
foreach ($names as $name) {
echo $name . "\n";
}
// John
// Doe
// Associative array — key => value
$person = ["name" => "John", "age" => 30];
foreach ($person as $property => $value) {
echo "$property: $value\n";
}
// name: John
// age: 30Como objetos PHP também são iteráveis, a mesma forma key => value percorre as propriedades públicas de um objeto:
<?php
class Person {
public $name = "John";
public $age = 30;
private $secret = "hidden"; // not visible from outside
}
foreach (new Person() as $property => $value) {
echo "$property: $value\n";
}
// name: John
// age: 30Modificando elementos com as &$value
Coloque um & antes da variável do loop para vinculá-la por referência, de modo que as alterações sejam propagadas de volta ao array original:
<?php
$nums = [1, 2, 3];
foreach ($nums as &$n) {
$n *= 2;
}
unset($n); // important — see gotcha below
print_r($nums);
// Array ( [0] => 2 [1] => 4 [2] => 6 )Atenção: após um loop
foreach (... as &$value),$valueainda referencia o último elemento. Sempre useunset($value)depois, ou uma atribuição posterior a$valuesubstituirá silenciosamente aquele último elemento do array.
Desestruturação com as [...]
Desde o PHP 7.1, você pode desestruturar cada linha diretamente na cláusula as, o que é ideal para arrays de pares ou linhas:
<?php
$pairs = [[1, "one"], [2, "two"]];
foreach ($pairs as [$num, $word]) {
echo "$num => $word\n";
}
// 1 => one
// 2 => twoA sintaxe mais antiga com list() — foreach ($pairs as list($num, $word)) — faz a mesma coisa. Consulte list() para mais detalhes.
as para alias de namespace e importação
Em uma instrução use, as renomeia um símbolo importado. Isso evita nomes longos completamente qualificados e resolve conflitos quando duas importações têm o mesmo nome curto:
<?php
use App\Models\User as UserModel;
use Acme\Auth\User as AuthUser;
// Both "User" classes are now usable without collision:
$a = new UserModel();
$b = new AuthUser();O uso de alias funciona da mesma forma para funções e constantes importadas (use function ... as, use const ... as). Consulte namespaces PHP para a visão completa.
as para resolução de conflitos em traits
Quando uma classe usa duas traits que definem um método com o mesmo nome, as permite criar um alias para um deles, para que ambos permaneçam acessíveis:
<?php
trait Logger { public function report() { return "log"; } }
trait Notifier { public function report() { return "notify"; } }
class Service {
use Logger, Notifier {
Logger::report insteadof Notifier; // pick Logger's report()
Notifier::report as notify; // keep Notifier's under a new name
}
}
$s = new Service();
echo $s->report() . "\n"; // log
echo $s->notify() . "\n"; // notifyAqui as não itera nada — ele simplesmente renomeia um método. as também pode alterar a visibilidade de um método, por exemplo, report as protected reportInternal;.
Quando usar qual
| Contexto | O que as faz | Exemplo |
|---|---|---|
foreach | vincula cada elemento a uma variável | foreach ($items as $item) |
use | cria alias de um símbolo importado | use Long\Name as Short; |
bloco use de trait | cria alias / redefine escopo de um método | Notifier::report as notify; |
| desestruturação | desempacota cada linha | foreach ($rows as [$a, $b]) |
Erros comuns
- Usar
asfora dos contextos acima.asnão é um operador geral —$x = $y as $z;é um erro de sintaxe. - Esquecer
unset()após um loop por referência (veja o aviso acima). - Esperar propriedades privadas ao iterar um objeto. Apenas as propriedades visíveis no escopo atual são expostas.
Resumo
A palavra-chave as sempre vincula um nome: um elemento de loop no foreach, um alias em uma importação use ou bloco de trait, ou um valor desestruturado. Conhecer todos os quatro usos significa que você lerá e escreverá PHP idiomático sem surpresas. Para se aprofundar, explore loops PHP, foreach, namespaces e traits.