From e758651f0d662125cf553d53e225b723f0c72c48 Mon Sep 17 00:00:00 2001 From: Cristian Ferreyra Date: Wed, 24 Aug 2022 01:21:39 -0300 Subject: [PATCH 1/7] fix PHP 8.1 release URL --- translations/es-AR.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/es-AR.md b/translations/es-AR.md index 6d6e61a..27bd781 100644 --- a/translations/es-AR.md +++ b/translations/es-AR.md @@ -18,7 +18,7 @@ Este documento es un cheatsheet para PHP con código que encontrará con frecuen 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. -> **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) +> **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) ### Recursos complementarios From b97d36214690596a1bb21fe728428ad2f859fa1d Mon Sep 17 00:00:00 2001 From: Cristian Ferreyra Date: Fri, 27 Jan 2023 02:51:32 -0300 Subject: [PATCH 2/7] update table of content --- translations/es-AR.md | 1 + 1 file changed, 1 insertion(+) diff --git a/translations/es-AR.md b/translations/es-AR.md index 27bd781..e08e7d1 100644 --- a/translations/es-AR.md +++ b/translations/es-AR.md @@ -63,6 +63,7 @@ Mas información en [php.net](https://www.php.net/supported-versions.php). + [Funciones flecha](#funciones-flecha) + [Expresión de coincidencia Match](#expresión-de-coincidencia-match) + [Interfaz Stringable](#interfaz-stringable) + + [Enums](#enums) ## Fundamentos From f52acfb153c214802e781dfd79bfc0d46d3b4dfd Mon Sep 17 00:00:00 2001 From: Cristian Ferreyra Date: Fri, 27 Jan 2023 02:53:03 -0300 Subject: [PATCH 3/7] init new enums section --- translations/es-AR.md | 117 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 116 insertions(+), 1 deletion(-) diff --git a/translations/es-AR.md b/translations/es-AR.md index e08e7d1..56b0f31 100644 --- a/translations/es-AR.md +++ b/translations/es-AR.md @@ -1547,4 +1547,119 @@ Por supuesto, para aceptar tanto `string` como `Stringable`, puede usar un tipo function myFunction(string|Stringable $param): string { return (string) $param; } -``` \ No newline at end of file +``` + +### Enums + +![php-version-81](https://shields.io/badge/php->=8.1-blue) + +Un Enum (o enumeración) define un nuevo tipo, que tiene un número fijo y limitado de posibles valores. + +```php +enum Status +{ + case DRAFT; + case PUBLISHED; + case ARCHIVED; +} +``` + +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: + +```php +enum MyEnum +{ + case FOO; + case foo; + case Foo; +} +``` + +Ahora podés comparar fácilmente las enumeraciones con el tipo de operador seguro `===`: + +```php +$statusA = Status::PENDING; +if ($statusA === Status::PENDING) { + // true +} +``` + +Además, una enumeración se comporta como un objeto PHP tradicional: + +```php +$statusA = Status::PENDING; +$statusB = Status::PENDING; +$statusC = Status::ARCHIVED; +$statusA === $statusB; // true +$statusA === $statusC; // false +$statusC instanceof Status; // true +``` + +Podés usar Enum para hacer cumplir los tipos: + +```php +function myFunction(Status $param) +{ + return $param; +} +$a = myFunction(Status::DRAFT); +// $a = Status::DRAFT +$b = myFunction('foo'); // TypeError: myFunction(): Argument #1 ($param) must be of type Status, string given +``` + +### Métodos en Enum + +Podés definir métodos en un Enum: + +```php +enum Status +{ + case DRAFT; + case PUBLISHED; + + public function label(): string + { + return match($this) + { + Status::DRAFT => 'Not ready...', + Status::PUBLISHED => 'Published !', + }; + } +} +``` + +Entonces podés usar los métodos en cualquier instancia de enum: + +```php +$a = Status::DRAFT; +$a->label(); // 'Not ready...' +``` + +### Valores de respaldo + +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` : + +```php +enum HttpStatus: int +{ + case OK = 200; + case NOT_FOUND = 404; + case INTERNAL_SERVER_ERROR = 500; +} +``` + +Y acá hay un ejemplo de un valor definido como `string`: + +```php +enum Status: string +{ + case DRAFT = 'draft'; + case PUBLISHED = 'published'; +} +``` + +#### Recursos externos + +- [Manual de Enums en la documentación oficial de PHP](https://www.php.net/manual/es/language.enumerations.php) +- [Enums en PHP.Watch](https://php.watch/versions/8.0/match-expression) +- [Guía de estilo para Enums en stitcher's blog](https://stitcher.io/blog/php-enum-style-guide) \ No newline at end of file From f9d47c7483cfe71bbd3025d89f123cef89ee9d50 Mon Sep 17 00:00:00 2001 From: Cristian Ferreyra Date: Fri, 27 Jan 2023 02:54:10 -0300 Subject: [PATCH 4/7] fix typo in named arguments anchor name --- translations/es-AR.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/es-AR.md b/translations/es-AR.md index 56b0f31..31af805 100644 --- a/translations/es-AR.md +++ b/translations/es-AR.md @@ -1337,7 +1337,7 @@ $r = add(1, ...$array); // PHP Error: Unknown named parameter $d #### Recursos adicionales -- [Named arguments in depth on stitcher's blof](https://stitcher.io/blog/php-8-named-arguments) +- [Named arguments in depth on stitcher's blog](https://stitcher.io/blog/php-8-named-arguments) - [Named Parameters on PHP.Watch](https://php.watch/versions/8.0/named-parameters) ### Funciones flecha From 24d57cd10a9288fdfa31e0f5a06e043a22a4e084 Mon Sep 17 00:00:00 2001 From: Cristian Ferreyra Date: Fri, 27 Jan 2023 02:55:27 -0300 Subject: [PATCH 5/7] add php 8.2 to releases table --- translations/es-AR.md | 1 + 1 file changed, 1 insertion(+) diff --git a/translations/es-AR.md b/translations/es-AR.md index 31af805..ebfe592 100644 --- a/translations/es-AR.md +++ b/translations/es-AR.md @@ -33,6 +33,7 @@ Cuando tengas dificultad para comprender un concepto, te sugiero que busques res | Version |Fecha de lanzamiento| |----------------------------------------------|---| +| [PHP 8.2](https://www.php.net/releases/8.2/en.php) |Diciembre 2022| | [PHP 8.1](https://www.php.net/releases/8.1/es.php) |Noviembre 2021| | [PHP 8.0](https://www.php.net/releases/8.0/es.php) |Noviembre 2020| | PHP 7.4 |Noviembre 2019| From 73751c6997ab749b8a0bb0508a74837052ca00a6 Mon Sep 17 00:00:00 2001 From: Cristian Ferreyra Date: Fri, 27 Jan 2023 02:56:06 -0300 Subject: [PATCH 6/7] add new external resource --- translations/es-AR.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/translations/es-AR.md b/translations/es-AR.md index ebfe592..4c311c7 100644 --- a/translations/es-AR.md +++ b/translations/es-AR.md @@ -25,7 +25,8 @@ Esta guía no está destinada a enseñarte PHP desde cero, sino a ayudar a los d Cuando tengas dificultad para comprender un concepto, te sugiero que busques respuestas en los siguientes sitios: - [Stitcher's blog](https://stitcher.io/blog) - [PHP.Watch](https://php.watch/versions) -- [Exploring php 8.0](https://leanpub.com/exploringphp80) +- [Exploring PHP 8.0](https://leanpub.com/exploringphp80) +- [PHP 8 in a nutshell](https://amitmerchant.gumroad.com/l/php8-in-a-nutshell) - [PHP The Right Way](https://phptherightway.com/) - [StackOverflow](https://stackoverflow.com/questions/tagged/php) From 0929be15085a0ce86e1bd6fe11559eabae8c37fc Mon Sep 17 00:00:00 2001 From: Cristian Ferreyra Date: Fri, 27 Jan 2023 02:56:33 -0300 Subject: [PATCH 7/7] add space after comma --- translations/es-AR.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/es-AR.md b/translations/es-AR.md index 4c311c7..a668a2a 100644 --- a/translations/es-AR.md +++ b/translations/es-AR.md @@ -1091,7 +1091,7 @@ Cuando se desea fusionar varias matrices, generalmente se usa `array_merge`: $array1 = ['baz']; $array2 = ['foo', 'bar']; -$array3 = array_merge($array1,$array2); +$array3 = array_merge($array1, $array2); // $array3 = ['baz', 'foo', 'bar'] ```