W3docs

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:

  1. Em um loop foreach, para vincular cada elemento (e opcionalmente sua chave) a uma variável.
  2. Em uma instrução use, para dar a um namespace, classe ou função importada um alias mais curto.
  3. Em um bloco use de trait, para criar alias ou redefinir o escopo de um método durante a resolução de conflitos.
  4. Em list() / desestruturação de array dentro de um foreach (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: 30

Como 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: 30

Modificando 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), $value ainda referencia o último elemento. Sempre use unset($value) depois, ou uma atribuição posterior a $value substituirá 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 => two

A 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"; // notify

Aqui 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

ContextoO que as fazExemplo
foreachvincula cada elemento a uma variávelforeach ($items as $item)
usecria alias de um símbolo importadouse Long\Name as Short;
bloco use de traitcria alias / redefine escopo de um métodoNotifier::report as notify;
desestruturaçãodesempacota cada linhaforeach ($rows as [$a, $b])

Erros comuns

  • Usar as fora dos contextos acima. as nã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.

Prática

Prática
O que a palavra-chave 'as' faz no PHP?
O que a palavra-chave 'as' faz no PHP?
Was this page helpful?