You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: translations/es-AR.md
+123-5Lines changed: 123 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -18,21 +18,23 @@ Este documento es un cheatsheet para PHP con código que encontrará con frecuen
18
18
19
19
Esta guía no está destinada a enseñarte PHP desde cero, sino a ayudar a los desarrolladores con conocimientos básicos que pueden tener dificultades para familiarizarse con las bases de código modernas (o para aprender Laravel o Symfony, por ejemplo) debido a los nuevos conceptos y características que PHP ha introducido a lo largo de los años.
20
20
21
-
> **Nota:** Los conceptos presentados acá se basan en la versión más reciente de PHP disponible ([PHP 8.1](https://www.php.net/releases/8.1/es.php) en el momento de la última actualización)
21
+
> **Nota:** Los conceptos presentados acá se basan en la versión más reciente de PHP disponible ([PHP 8.1](https://www.php.net/releases/8.1/es.php) en el momento de la última actualización)
22
22
23
23
### Recursos complementarios
24
24
25
25
Cuando tengas dificultad para comprender un concepto, te sugiero que busques respuestas en los siguientes sitios:
Un Enum (o enumeración) define un nuevo tipo, que tiene un número fijo y limitado de posibles valores.
1559
+
1560
+
```php
1561
+
enum Status
1562
+
{
1563
+
case DRAFT;
1564
+
case PUBLISHED;
1565
+
case ARCHIVED;
1566
+
}
1567
+
```
1568
+
1569
+
En un Enum, cada definición distingue entre mayúsculas y minúsculas. Históricamente, en PHP generalmente representamos "constantes" con mayúsculas para distinguirlas de las variables normales, por lo que tiene sentido apegarse a la notación en mayúsculas para los casos de enumeración. Tené en cuenta que esto funcionará y definirá 3 casos diferentes:
1570
+
1571
+
```php
1572
+
enum MyEnum
1573
+
{
1574
+
case FOO;
1575
+
case foo;
1576
+
case Foo;
1577
+
}
1578
+
```
1579
+
1580
+
Ahora podés comparar fácilmente las enumeraciones con el tipo de operador seguro `===`:
1581
+
1582
+
```php
1583
+
$statusA = Status::PENDING;
1584
+
if ($statusA === Status::PENDING) {
1585
+
// true
1586
+
}
1587
+
```
1588
+
1589
+
Además, una enumeración se comporta como un objeto PHP tradicional:
1590
+
1591
+
```php
1592
+
$statusA = Status::PENDING;
1593
+
$statusB = Status::PENDING;
1594
+
$statusC = Status::ARCHIVED;
1595
+
$statusA === $statusB; // true
1596
+
$statusA === $statusC; // false
1597
+
$statusC instanceof Status; // true
1598
+
```
1599
+
1600
+
Podés usar Enum para hacer cumplir los tipos:
1601
+
1602
+
```php
1603
+
function myFunction(Status $param)
1604
+
{
1605
+
return $param;
1606
+
}
1607
+
$a = myFunction(Status::DRAFT);
1608
+
// $a = Status::DRAFT
1609
+
$b = myFunction('foo'); // TypeError: myFunction(): Argument #1 ($param) must be of type Status, string given
1610
+
```
1611
+
1612
+
### Métodos en Enum
1613
+
1614
+
Podés definir métodos en un Enum:
1615
+
1616
+
```php
1617
+
enum Status
1618
+
{
1619
+
case DRAFT;
1620
+
case PUBLISHED;
1621
+
1622
+
public function label(): string
1623
+
{
1624
+
return match($this)
1625
+
{
1626
+
Status::DRAFT => 'Not ready...',
1627
+
Status::PUBLISHED => 'Published !',
1628
+
};
1629
+
}
1630
+
}
1631
+
```
1632
+
1633
+
Entonces podés usar los métodos en cualquier instancia de enum:
1634
+
1635
+
```php
1636
+
$a = Status::DRAFT;
1637
+
$a->label(); // 'Not ready...'
1638
+
```
1639
+
1640
+
### Valores de respaldo
1641
+
1642
+
A veces es necesario asignar un valor propio a cada caso (ej: para almacenarlo en una base de datos, comparación, etc). Tenés que definir el tipo del valor. Acá hay un ejemplo con un valor definido como un `int` :
1643
+
1644
+
```php
1645
+
enum HttpStatus: int
1646
+
{
1647
+
case OK = 200;
1648
+
case NOT_FOUND = 404;
1649
+
case INTERNAL_SERVER_ERROR = 500;
1650
+
}
1651
+
```
1652
+
1653
+
Y acá hay un ejemplo de un valor definido como `string`:
1654
+
1655
+
```php
1656
+
enum Status: string
1657
+
{
1658
+
case DRAFT = 'draft';
1659
+
case PUBLISHED = 'published';
1660
+
}
1661
+
```
1662
+
1663
+
#### Recursos externos
1664
+
1665
+
-[Manual de Enums en la documentación oficial de PHP](https://www.php.net/manual/es/language.enumerations.php)
1666
+
-[Enums en PHP.Watch](https://php.watch/versions/8.0/match-expression)
1667
+
-[Guía de estilo para Enums en stitcher's blog](https://stitcher.io/blog/php-enum-style-guide)
0 commit comments