-
Notifications
You must be signed in to change notification settings - Fork 0
8 type hinting en php
Desde PHP 5 es posible utilizar el type hinting, o la determinación de tipos, que permite especificar el tipo de datos que se espera de un argumento en la declaración de una función. Cuando se llama a la función, PHP comprobará si los argumentos son del tipo especificado, y sino lo son se emitirá un error y la ejecución se detendrá.
Los tipos soportados por esta característica (en PHP 5.5) son: arrays, clases, interfaces, y callables.
El objetivo de la determinación de tipos es organizar mejor el código y mejorar el manejo de los errores.
Cuando queremos forzar a una función a aceptar sólo argumentos de un tipo. Su uso más común es con objetos, indicando el nombre de la clase:
class Aguacate {
public $calorias = 100;
}
class Persona {
public $energia;
public function comerAguacate (Aguacate $aguacate) {
$this->energia += $aguacate->calorias;
}
public function mostrarEnergia(){
return "Energía actual: " . $this->energia . "<br>";
}
}
$sonia = new Persona;
$almuerzo = new Aguacate;
$sonia->comerAguacate($almuerzo);
$sonia->comerAguacate($almuerzo);
echo $sonia->mostrarEnergia(); // Devuelve: Energía actual 200
En el ejemplo anterior, hemos forzado a que el argumento que se pasa a la función comerAguacate() sea un objeto de la clase Aguacate. Si el $almuerzo no fuera un objeto de la clase Aguacate, no se podría emplear la función comerAguacate(). Si por ejemplo en el ejemplo anterior cambiamos el almuerzo por un string kiwi:
$almuerzo = "Kiwi";
$sonia->comerAguacate($almuezo);
// Devuelve: Catchable fatal error: Argument 1 passed to Persona::comerAguacate() must be an instance of Aguacate, string given
Es necesario crear una instancia de Aguacate para que comerAguacate() acepte el argumento.
Vamos a poner otro ejemplo, ahora queremos que el argumento que se acepte sea del tipo array:
class Persona {
public $energiaMedia;
public $comidas;
public function calcularEnergia(array $comidas)
{
$numeroComidas = count($comidas);
$energiaTotal = $numeroComidas * $this->energiaMedia;
return $energiaTotal;
}
}
$sonia = new Persona;
// Energía media que proporciona cada comida:
$sonia->energiaMedia = 480;
// Total de comidas:
$comidas = array("Desayuno", "Almuerzo", "Comida", "Cena");
// Calcular la energía:
echo $sonia->calcularEnergia($comidas); // Devuelve 1920
La función calcularEnergia() exige que el argumento sea un array. Si cambiamos el argumento y ponemos un integer, dará error:
$comidas = 4;
echo $sonia->calcularEnergia($comidas);
// Catchable fatal error: Argument 1 passed to Persona::calcularEnergia() must be of the type array, integer given
Anterior | Siguiente |
@intelguasoft - Full Stack Developer
Versión: | 0.0.3-beta |
El curso está organizado según las temáticas indicadas en la página oficial de Rogue Wave Zend para la certificación de PHP.
Esta curso no tiene ninguna relación con Zend. |
---|---|---|
Fecha: | 28.11.2018 |
Básicos
Sintaxis básicaOperadores
Operadores bit a bit
Variables
Estructuras de control
Constantes y constructores base
Espacio de nombres
Extensiones
Configuraciones
Variables al descubierto
Recolector de basuras
Rendimiento (Performance)
Funciones
FuncionesArgumentos en funciones
Funciones variables
Valores por referencia en funciones
Funciones que devuelven algo
Ámbito de variables
Funciones anónimas y closure's
Cadenas y patrones
Las comillas y las cadenas de caracteresHeredoc y Nowdoc
Comparando cadenas de caracteres
Extracción en cadenas de caracteres
Análisis en cadenas de caracteres
Reemplazos en cadenas de caracteres
Formato de cadena de caracteres
Expresiones regulares (RegEx)
Codificación de caracteres
Codificación en cadenas de caracteres
Arreglos (Array's)
ArreglosArreglos asociativos
Iterar arreglos
Funciones de arreglos
SPL Arreglos mediante objetos
Conversión de arreglos
Archivos (I/O)
Manejo de archivosLectura de archivos
Escritura de archivos
Funciones del sistema de archivos
Socket's y archivos
Streams (?)
Seguridad
Concepto y funcionamiento CGIConfigurando la seguridad
Seguridad en Sesiones
Ataques XSS
Ataques CSRF
Ataques SQLInjection
Ataques CodeInjection
Ataques EmailInjection
Filtrado de datos de entrada
Escape de datos de salida
Encriptación y contraseñas
Seguridad en el almacenamiento de datos
Seguridad en la subida de datos
SSL y OpenSSL
Base de datos
Principios básicos SQLLos joins en SQL
Principales funciones SQL
Preparando sentencias SQL
Transacciones en SQL
Algo de PDO
Programación Orientada a Objetos
Instancias de clasesModificadores y herencia de clases
Interfaces
Excepciones
Auto-carga (Autoload)
Reflexión (Reflection)
Determinación de tipos (Type hinting)
Constantes de clase
Enlace estático de ejecución (Late Static Binding)
Métodos mágicos
Librería estándar PHP (SPL)
Generadores (Generators)
Traits
Clases abstractas
Formatos de información
Algo de XMLAlgo de SimpleXML
Algo de XML Parser
Algo de PHP DOM
Algo de Web Services
Web Services con SOAP
Algo de REST
Algo de JSON
Formato de fecha y hora
Características web's
SesionesFormularios
Métodos GET y POST
Cookies
Protocolo HTTP y sus headers
Autenticación HTTP
Códigos de estado HTTP