Funciones en PHP
Las funciones en PHP son bloques de código o subalgoritmos el cual puede ser reutilizado y permite resolver una tarea específica. Las funciones deben ser definidas antes de ser llamadas o referenciadas.
Temas siguientes:
- funciones definidas
- funciones variables
- funciones (build-in)
- funciones anónimas
- Tipos de retorno en funciones
- Retornos que pueden ser null
- Declaración de tipo de dato en los parámetros de las funciones
- parámetros nullables
Funciones Definidas en PHP
https://blastcoding.com/funciones-en-php/#funciones_definidasLa definida es la función a la cual le damos un nombre . El nombre de una función debe de empezar con una letra o guion bajo. Para declarar una función debe usar la palabra clave function
.
<?php function saludo(){ //declaracion de la funcion saludo echo "holaa !!"; } saludo();// llamo a la funcion saludo ?>
Como podemos ver definimos una función con la palabra function u la llamamos con el nombre que le hemos dado, en este caso saludo()
A una función también le podemos pasar parámetros, vea el siguiente ejemplo.
paso de parámetro a función<?php function saludo($nombre){ echo "hola $nombre !!"; } saludo("Luis"); saludo("Mariam"); ?>
Pasar parámetros por referencia a una función. A continuación la diferencia entre una cosa y otra.
Ejemplo- paso de parámetro por referencia<?php $a = 0; $b = 0; echo "tanto la variable a como b partirán con el mismo valor y veremos como cambia pasar algo por referencia o no"; function porReferencia(&$n){ $n = 2; } function sinReferencia($n){ $n = 2; } porReferencia($a); echo "<br/>el valor de a: ".$a; sinReferencia($b); echo "<br/>el valor de b: ".$b; //como puede ver el valor de a ahora será 2 y el de b seguirá siendo 0 //esta es la diferencia de usar una variable por referencia ?>
Funciones variables
Si una variable le siguen 2 parentesis () ejemplo $nombre()
esta asumirá el nombre de valor de la variable a estas se le llama funciones variables. Obviamente la variable tendra que tener un valor string que cumpla con las reglas para nombres de funciones.
<?php function hola(){ echo "hola a todos"; } $nombre= "hola" $nombre(); ?>
Funciones (build-in)
Otro tipo de funciones en php viene con muchas funciones ya pre-instaladas y otras que si las tratamos de usar sin que la extensión este instalados fallaran por ejemplo mysqli,curl, otros. Muchas de estas extenciones vienen preinstaladas si usamos un LAMP un WAMP o otro de este tipo.
Funciones anónimas en PHP
https://blastcoding.com/funciones-en-php/#funciones_anonimasEn las funciones anónimas estas no tiene un nombre alguno y puede ser usada en un callback o guardada en una variable o puede ser una función que será usada directamente. Creo que ya use una en una variable una vez. De todos modos aquí unos ejemplos.
Ejemplo de Función anónima<?php $name = function($var){ if(is_numeric($var)): return "es un numero"; elseif(is_array($var)): return "es un array"; else: return "no es un numero ni un array"; endif; }; echo $name(array(1,2)); ?>
el siguiente ejemplo lo saqué directo de php.net
<?php echo preg_replace_callback('~-([a-z])~', function ($coincidencia) { return strtoupper($coincidencia[1]); }, 'hola-mundo'); // imprime holaMundo ?>
Utilizando use
Desde PHP 7.1 puede usar el término use
para referirse a variables en el entorno padre de esta.
<?php
$mensaje = 'hola';
// Sin "use"
$ejemplo = function () {
var_dump($mensaje);
};
$ejemplo();
// Heredar $mensaje
$ejemplo = function () use ($mensaje) {
var_dump($mensaje);
};
$ejemplo();
Tipo de retorno en funciones
También se puede predefinir lo que devolverá una función con : luego del nombre() de la función y el tipo que devolverá o void si es que la función no devolverá nada.
sintaxis:function nombre_funcion () : tipo_de_variabledefiniendo que tipo de dato retorna
function llamar ($nombre) : string { return "llamando a $nombre"; }
es probable que tengamos que usar declare(strict_type=1) la idea hoy en día es que esta línea sea declarada casi al inicio de nuestro proyecto así el tipo de datos es estricto en todo el programa.
Retornos que pueden ser null
Para que un retorno pueda ser null debemos de agregar delante del tipo de retorno ?
function llamar ($nombre) : ?string { return "llamando a $nombre"; }
Declaración de tipo de dato en los parámetros de las funciones (desde PHP 7.4)
PHP 7.4 trajo consigo algunas cosas nuevas como el poder como la declaración del tipo de dato de la variable en el argumento, esto es extremadamente útil, ya que podemos saber con certeza el tipo/ los tipos de datos que le estamos pasando a dicha función.
definiendo que tipo de datos pasamos por parámetro<?php function holamundo(string $a, string $b){ echo $a." ".$b; } holamundo("hola","mundo");
Por defecto, PHP tratará de cambiar el tipo de la variable al esperado, para evitar esto puede usar la sentencia declare(strict_types=1);
. De este modo estamos obligando a que la variable pasada sea lo esperado. En caso de no serlo nos dará un error.
Veamos unos ejemplos con la función anterior.
Sin usar Strict type
Sin declare(strict_type=1)<?php function holamundo(string $a, string $b){ echo $a." ".$b; } holamundo(1,"mundo");
1 mundo
En caso de usar Strict type
Con declare(strict_type=1)<?php declare(strict_types=1); function holamundo(string $a, string $b){ echo $a." ".$b; } holamundo(1,"mundo");
Fatal error: Uncaught TypeError: holamundo(): Argument #1 ($a) must be of type string, int given, called in C:\xampp\htdocs\tutorialphp\funciones.php on line 6 and defined in C:\xampp\htdocs\tutorialphp\funciones.php:3 Stack trace: #0 C:\xampp\htdocs\tutorialphp\funciones.php(6): holamundo(1, 'mundo') #1 {main} thrown in C:\xampp\htdocs\tutorialphp\funciones.php on line 3
Parámetros nullables
Para que un argumento pueda ser null
además del tipo de datos que le especificamos, le tenemos que agregar el simbolo ?
del tipo de datos que especificamos
Tomemos como ejemplo el código anterior:
<?php declare(strict_types=1); function holamundo(?string $a, string $b){ echo $a." ".$b; } holamundo(NULL,"mundo");
Ahora $a
puede ser null
la cuestión es que ahora tengo que trabajar con null por ejemplo si $a es null haga le asigne un valor. Si yo corro tal como está esto nos dará como resultado solamente mundo
Referencia:php.net
- Anterior: Estructuras de control en PHP
- Siguiente: introducción a POO en PHP
Este tipo de función en conjunto con heredoc pueden ser muy útiles para WordPress o en cualquier proyecto en PHP.
Tampoco saturas o tienes variables de mas globales, es una muy buena opcion veamos su sintaxis rapidamente: