Skip to content

Commit 9e61ac8

Browse files
authored
Merge pull request #33 from backendrulz/main
Update es-AR to PHP 8.2
2 parents 9d79b45 + 0929be1 commit 9e61ac8

File tree

1 file changed

+123
-5
lines changed

1 file changed

+123
-5
lines changed

translations/es-AR.md

Lines changed: 123 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,21 +18,23 @@ Este documento es un cheatsheet para PHP con código que encontrará con frecuen
1818

1919
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.
2020

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)
2222
2323
### Recursos complementarios
2424

2525
Cuando tengas dificultad para comprender un concepto, te sugiero que busques respuestas en los siguientes sitios:
2626
- [Stitcher's blog](https://stitcher.io/blog)
2727
- [PHP.Watch](https://php.watch/versions)
28-
- [Exploring php 8.0](https://leanpub.com/exploringphp80)
28+
- [Exploring PHP 8.0](https://leanpub.com/exploringphp80)
29+
- [PHP 8 in a nutshell](https://amitmerchant.gumroad.com/l/php8-in-a-nutshell)
2930
- [PHP The Right Way](https://phptherightway.com/)
3031
- [StackOverflow](https://stackoverflow.com/questions/tagged/php)
3132

3233
### Lanzamientos recientes de PHP
3334

3435
| Version |Fecha de lanzamiento|
3536
|----------------------------------------------|---|
37+
| [PHP 8.2](https://www.php.net/releases/8.2/en.php) |Diciembre 2022|
3638
| [PHP 8.1](https://www.php.net/releases/8.1/es.php) |Noviembre 2021|
3739
| [PHP 8.0](https://www.php.net/releases/8.0/es.php) |Noviembre 2020|
3840
| PHP 7.4 |Noviembre 2019|
@@ -63,6 +65,7 @@ Mas información en [php.net](https://www.php.net/supported-versions.php).
6365
+ [Funciones flecha](#funciones-flecha)
6466
+ [Expresión de coincidencia Match](#expresión-de-coincidencia-match)
6567
+ [Interfaz Stringable](#interfaz-stringable)
68+
+ [Enums](#enums)
6669

6770
## Fundamentos
6871

@@ -1088,7 +1091,7 @@ Cuando se desea fusionar varias matrices, generalmente se usa `array_merge`:
10881091
$array1 = ['baz'];
10891092
$array2 = ['foo', 'bar'];
10901093

1091-
$array3 = array_merge($array1,$array2);
1094+
$array3 = array_merge($array1, $array2);
10921095
// $array3 = ['baz', 'foo', 'bar']
10931096
```
10941097

@@ -1336,7 +1339,7 @@ $r = add(1, ...$array); // PHP Error: Unknown named parameter $d
13361339

13371340
#### Recursos adicionales
13381341

1339-
- [Named arguments in depth on stitcher's blof](https://stitcher.io/blog/php-8-named-arguments)
1342+
- [Named arguments in depth on stitcher's blog](https://stitcher.io/blog/php-8-named-arguments)
13401343
- [Named Parameters on PHP.Watch](https://php.watch/versions/8.0/named-parameters)
13411344

13421345
### Funciones flecha
@@ -1546,4 +1549,119 @@ Por supuesto, para aceptar tanto `string` como `Stringable`, puede usar un tipo
15461549
function myFunction(string|Stringable $param): string {
15471550
return (string) $param;
15481551
}
1549-
```
1552+
```
1553+
1554+
### Enums
1555+
1556+
![php-version-81](https://shields.io/badge/php->=8.1-blue)
1557+
1558+
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

Comments
 (0)