W3docs

as

La palabra clave "as" en PHP se usa en foreach, alias de namespaces, traits y desestructuración de arrays. Aprende sus cuatro usos con ejemplos.

La palabra clave as en PHP

as es una palabra clave de PHP pequeña pero versátil. No es una función y nunca aparece sola — siempre actúa como enlazador que asigna un nombre temporal a algo. La encontrarás en cuatro contextos distintos:

  1. En un bucle foreach, para enlazar cada elemento (y opcionalmente su clave) a una variable.
  2. En una sentencia use, para dar a un namespace, clase o función importada un alias más corto.
  3. En un bloque use de trait, para crear un alias o cambiar el ámbito de un método durante la resolución de conflictos.
  4. En list() / desestructuración de arrays dentro de un foreach (foreach ($rows as [$a, $b])).

Esta guía cubre cada uso con ejemplos ejecutables, además de los errores comunes.

as en un bucle foreach

Este es el uso que verás con más frecuencia. Dentro de foreach, as enlaza el elemento actual a una variable para el cuerpo del bucle. Existen dos 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
}

La variable después de as se reasigna en cada iteración; no necesita existir de antemano.

Iterar valores y pares clave/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

Dado que los objetos de PHP también son iterables, la misma forma key => value recorre las propiedades públicas de un 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

Modificar elementos con as &$value

Coloca un & antes de la variable del bucle para enlazarla por referencia, de modo que los cambios se propaguen de vuelta al 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 )

Atención: después de un bucle foreach (... as &$value), $value sigue referenciando el último elemento. Siempre ejecuta unset($value) después, o una asignación posterior a $value sobrescribirá silenciosamente ese último elemento del array.

Desestructuración con as [...]

Desde PHP 7.1 puedes desestructurar cada fila directamente en la cláusula as, lo cual es perfecto para arrays de pares o filas:

<?php

$pairs = [[1, "one"], [2, "two"]];
foreach ($pairs as [$num, $word]) {
  echo "$num => $word\n";
}
// 1 => one
// 2 => two

La sintaxis antigua con list()foreach ($pairs as list($num, $word)) — hace lo mismo. Consulta list() para más detalles.

as para alias de namespaces e importaciones

En una sentencia use, as renombra un símbolo importado. Esto evita nombres completamente calificados largos y resuelve conflictos cuando dos importaciones comparten el mismo nombre corto:

<?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();

Los alias funcionan igual para funciones y constantes importadas (use function ... as, use const ... as). Consulta los namespaces de PHP para una visión completa.

as para resolución de conflictos en traits

Cuando una clase usa dos traits que definen un método con el mismo nombre, as permite crear un alias para uno de ellos de modo que ambos sigan siendo accesibles:

<?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

Aquí as no itera nada — simplemente renombra un método. as también puede cambiar la visibilidad de un método, por ejemplo report as protected reportInternal;.

Cuándo usar cada forma

ContextoQué hace asEjemplo
foreachenlaza cada elemento a una variableforeach ($items as $item)
usecrea un alias de un símbolo importadouse Long\Name as Short;
bloque use de traitcrea un alias / cambia el ámbito de un métodoNotifier::report as notify;
desestructuracióndesempaqueta cada filaforeach ($rows as [$a, $b])

Errores comunes

  • Usar as fuera de los contextos anteriores. as no es un operador general — $x = $y as $z; es un error de sintaxis.
  • Olvidar unset() después de un bucle por referencia (ver la advertencia anterior).
  • Esperar propiedades privadas al iterar un objeto. Solo se exponen las propiedades visibles en el ámbito actual.

Resumen

La palabra clave as siempre enlaza un nombre: un elemento del bucle en foreach, un alias en una importación use o en un bloque de trait, o un valor desestructurado. Conocer los cuatro usos te permitirá leer y escribir PHP idiomático sin sorpresas. Para profundizar, explora los bucles de PHP, foreach, los namespaces y los traits.

Práctica

Práctica
¿Qué hace la palabra clave 'as' en PHP?
¿Qué hace la palabra clave 'as' en PHP?
Was this page helpful?