Funciones
## Objetivos de Aprendizaje
- Crear funciones definidas por el usuario
- Comprender parámetros y valores de retorno
- Trabajar con listas de argumentos de longitud variable
- Dominar funciones anónimas y closures
- Usar funciones flecha
## Definiendo Funciones
### Función Básica
```php
```
### Función con Parámetros
```php
```
### Valores de Retorno
```php
```
### Múltiples Valores de Retorno (vía Arreglo)
```php
```
## Parámetros
### Valores de Parámetros por Defecto
```php
```
### Argumentos Posicionales vs Nombrados (PHP 8)
```php
```
### Declaraciones de Tipo
```php
```
### Tipos Anulables
```php
```
### Funciones Void
```php
```
### Tipo Mixed (PHP 8)
```php
```
## Argumentos de Longitud Variable
### func_get_args()
```php
```
### Operador Spread (...)
```php
```
### Args Fijos + Variables
```php
```
## Tipos de Retorno
### Declaración
```php
```
### Tipos Unión (PHP 8)
```php
```
## Funciones Anónimas
### Anónima Básica
```php
```
### Usando use()
```php
```
### Cambiando Variable Externa
```php
```
## Funciones Flecha (PHP 7.4+)
### Función Flecha Básica
```php
$x * 2;
echo $double(5); // 10
?>
```
### Flecha con Múltiples Args
```php
$a + $b;
echo $add(3, 4); // 7
?>
```
### Flecha con Múltiples Expresiones
```php
$x * $factor + ($factor > 1 ? 5 : 0);
echo $calculator(3); // 11
?>
```
### Flecha vs Anónima
```php
$x * $factor;
// Anonymous - must use 'use' explicitly
$anon = function($x) use ($factor) {
return $x * $factor;
};
?>
```
## Tipo Callable
### Usando Funciones como Argumentos
```php
```
### Declaraciones de Tipo para Callables
```php
print("Hi!\n"), 3);
?>
```
## Funciones Callback
### array_map Callback
```php
```
### array_filter Callback
```php
```
### usort con Callback
```php
"Alice", "age" => 25],
["name" => "Bob", "age" => 30],
["name" => "Charlie", "age" => 20]
];
usort($people, function($a, $b) {
return $a["age"] <=> $b["age"];
});
print_r($people); // Sorted by age
?>
```
## Recursión
### Factorial
```php
```
### Fibonacci
```php
```
## Funciones Variables
### Llamadas a Funciones Dinámicas
```php
```
### Variantes de Métodos
```php
$method(); // Calls $obj->myMethod()
?>
```
## Referencia de Funciones Integradas
### Funciones Matemáticas
```php
```
### Funciones de Cadena
```php
```
## Resumen
- Define funciones con `function name() { }`
- Parámetros con valores por defecto: `function($x = 10)`
- Valores de retorno: `return $value;`
- Declaraciones de tipo para parámetros y retornos
- Args variables: `...$args` (operador spread)
- Anónimas: `$func = function() { }`
- Funciones flecha: `fn($x) => $x * 2`
- Usa `use($var)` para capturar variables externas en closures
- Usa `&` para modificar variables externas en closures
- Recursión: función se llama a sí misma
- Las funciones son de primera clase: pueden asignarse a variables
Comments
Comments powered by Giscus
To enable comments, add your Giscus embed code here.
Learn more about Giscus →