sábado, 2 de agosto de 2014

Las funciones en PHP - 1 de 2



1. Creación

Las funciones permiten reutilizar varias veces el código PHP. Por ejemplo, si tiene una página Web con precio sin IVA de diferentes productos, puede crear una función para calcular el precio con IVA de cada producto. Esto evita escribir en cada línea el cálculo
en PHP. En su desarrollo, intente agrupar el código. Así el mantenimiento es más fácil. De hecho, cuanto más se escribe el código, es más probable que cometa errores.

La sintaxis para crear una función es: función nombre_de_la función ($argumento) { }

Nunca ponga espacios ni caracteres especiales en el nombre de una función. El parámetro también se llama argumento.

Intente nombrar la función con palabras separadas por el símbolo _ o con mayúsculas que expliquen lo que hace la función, por ejemplo: nombre_de_la_función o NombreDeLaFunción.

Por ejemplo:

<?php
función calculo_iva($precio_bruto) {
return $precio_bruto * 1.21;
}
?>

Esta función calcula el precio con IVA a partir del precio sin IVA, que pasa como parámetro, y devuelve el resultado a través de la palabra clave return. Una función no está obligada a devolver un resultado; puede servir solo para mostrar un mensaje, por ejemplo.

Para recurrir a esta función, escriba lo siguiente:

Por ejemplo:

<?php
calculo_iva(12);
?>

O al final:

<?php
función calculo_iva($precio_bruto) {
return $precio_bruto * 1.21;
}
$precio_iva = calculo_iva(12);
echo "12 euros sin IVA corresponden a ".$precio_iva" euros con IVA";
?>

Da como resultado:

12 euros sin IVA corresponden a 14.52 euros con IVA

El número 12 pasa con el parámetro de la función; por tanto $precio_bruto se convierte en igual a 12, y la función devuelve 12*1.21 (14.52) en la variable $precio_iva.

Puede crear funciones que tomen varios parámetros o ningún parámetro.

En el siguiente ejemplo, la función toma varios parámetros y devuelve un valor:

<?php
function junta_palabra($palabra1,$palabra2,$palabra3) {
$devuelve = $palabra1." ".$palabra2." ".$palabra3;
Return $devuelve;
}
echo junta_palabra("Hola","Juan","ESTEFANIA");
?>

Da como resultado:

Hola Juan ESTEFANIA

En el siguiente ejemplo, la función no toma ni devuelve ningún valor:

<?php
function muestra_Hola() {
echo "Hola";
}
muestra_Hola();
?>

Da como resultado:

Hola


2. Alcance de las variables

Este concepto es muy importante porque es el origen de muchos errores, sobre todo para aquellas personas que no han aprendido las nociones generales del desarrollo.

Las variables declaradas o que pasan como argumentos a una función solo son válidas en la función.

Por ejemplo:

<?php
function muestra_palabra($nombre) {
echo $nombre;
}
muestra_palabra("Hola "); //muestra Hola
echo $nombre; //error porque $nombre no se define
?>

Da como resultado:

Hola
Notice: Undefined variable: nombre

La variable $nombre solo es válida en la función muestra_palabra.

Para evitar este error, defina la variable $nombre fuera de la función:

<?php
$nombre = "Juan";
function muestra_palabra($nombre) {
echo $nombre;
}
muestra_palabra("Hola "); //muestra Hola
echo $nombre; //muestra Juan
?>

Da como resultado:

Hola Juan

Atención: la variable $nombre definida antes que la función no es la misma que $nombre pasada con el parámetro de la función.

Lo mismo ocurre con una variable declarada fuera de la función, que tampoco es válida en la función.

Por ejemplo:

<?php
$nombre = "Juan";
function muestra_palabra() {
echo $nombre; //muestra un error
}
muestra_palabra();
?>

Da como resultado:

Notice: Undefined variable: nombre


3. Las variables globales

Puede declarar una variable con la palabra clave global. Esto tiene como efecto definir la variable en todo el código PHP de su página y en las funciones.

Si retomamos el ejemplo anterior agregando $nombre como variable global en la función:

<?php
$nombre = "Juan";
function muestra_palabra() {
global $nombre;
echo $nombre;
}
muestra_palabra();
?>

Da como resultado:

Juan

La otra solución consiste en utilizar la tabla asociativa $GLOBALS, que contiene todas las variables con su valor. Esta tabla tiene un alcance global a toda la página php (capítulo Transmitir datos de una página a otra - Las variables superglobales).


4. Las variables estáticas

Una variable declarada con la palabra clave static en una función permite conservar su valor cuando se llama varias veces a la función. De hecho, elimina el valor de la variable cada vez que se llama a la función:

<?php
function muestra_numero() {
$numero = 0;
$numero=$numero + 1;
echo $numero."; ";
}
muestra_numero(); //muestra 1
muestra_numero(); //muestra 1
?>

Da como resultado:

1; 1;

En el siguiente ejemplo, $numero se declara como static:

<?php
function muestra_numero() {
static $numero = 0;
$numero=$numero + 1;
echo $numero."; ";
}
muestra_numero(); //muestra 1
muestra_numero(); //muestra 2
?>

Da como resultado:

1; 2;

De esta manera, $numero conserva su valor de una llamada a otra de la función.


5. Funciones útiles
  • La función isset() permite probar que existe una variable. Si existe, devuelve true, y si no existe, false.

Por ejemplo:

<?php
$frase = "Hola, hace buen tiempo";
if (isset($frase)){
echo "La variable existe.";
}
else {
echo "La variable no existe.";
}
?>

Da como resultado:

La variable existe.

Por tanto, su sintaxis es:

$existe = isset ($variable);
  • La función var_dump() permite mostrar el tipo de contenido y el contenido de una variable.

Por ejemplo:

<?php
$frase = "Hola, hace buen tiempo";
var_dump($frase);
?>

Da como resultado:

string(21) "Hola, hace buen tiempo"

Por tanto, su sintaxis es:

var_dump($variable);

Esta función también acepta las tablas como parámetro.

Por ejemplo:

<?php
$tabla = array("Fresa", "Plátano", array(1, 2, 3));
var_dump($tabla);
?>

Da como resultado:

array(3) { [0]=> string(6) "Fresa" [1]=> string(6) "Plátano" [2]=> array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) } }

  • La función empty() permite comprobar si una variable es o no nula. Devuelve true si es nula, y false si no lo es.

Por ejemplo:

<?php
$frase = "Hola, hace buen tiempo";
if (empty($frase)){
echo "La variable es nula.";
}
else {
echo "La variable no es nula.";
}
?>

Da como resultado:

La variable no es nula.

Desde PHP5.5 puede pasar como argumento de una función.

Por ejemplo:

<?php
function always_false() {
return false;
}
if (empty(alway_false())) {
echo ’Se mostrará esto’
}
?>

Da como resultado:

Se mostrará esto

Por tanto, su sintaxis es:

$nula = empty ($variable o function());


6. Paso por referencia

Cuando una variable se pasa como argumento de una función, se pasa por el valor, es decir, es una copia de la variable que se ha pasado como argumento.

Ejemplo de paso por el valor:

<?php
function añadir_señor($argumento) {
$argumento = $argumento . " Señor";
}
$texto = "Hola";
añadir_señor($texto);
echo $texto;
?>

Da como resultado:

Hola

Se pasa la variable $texto como argumento a la función; no se cambia su valor en la función, solo se envía su valor a la función.

El paso del parámetro se realiza agregando el símbolo & delante de la variable. Tiene como efecto pasar la dirección de memoria de la variable y así puede modificar su valor.

Ejemplo de paso por referencia:

<?php
function añadir_señor(&$argumento) { //paso por referencia
$argumento = $argumento . " Señor";
}
$texto = "Hola";
añadir_señor($texto);
echo $texto;
?>

Da como resultado:

Hola Señor

Se pasa la variable $texto como argumento a la función con ayuda de &$argumento y se modifica al concatenar $argumento con la cadena de caracteres " Señor". Al salir de la función, $texto tiene como valor $argumento, es decir, "Hola Señor".



Espero haber ayudado en algo. Hasta la próxima oportunidad!







No hay comentarios:

Publicar un comentario

       

Etiquetas

Academy (23) Accediendo a datos con ADO .NET (31) Acceso a la red (30) Algoritmo (34) Algoritmos en JAVA (2) Ampliación de clases (2) APRENDA A PROGRAMAR COMO SI ESTUVIERA EN PRIMERO - Autores : IKER AGUINAGA (3) APRENDA A PROGRAMAR COMO SI ESTUVIERA EN PRIMERO - Autores : IKER AGUINAGA (10) Aprendiendo a desarrollar en Windows 8 (5) Aprendiendo UML en 24 Horas (Autor : Joseph Schmuller ) (30) Arquitectura (29) Arquitectura del Computador (3) Arquitectura del Computador - Historia de la informática (1) Asignación de direcciones IP (23) Aspectos fundamentales de bases de datos (5) Auditoría de la dirección (2) Auditoría de Sistemas (3) Auditoría Informática - Un enfoque práctico - Mario G . Piattini y Emilio del Peso (7) Avanzado (23) Base de Datos (67) Básico (23) Bios (29) Business Productivity Online Suite - BPOS (3) Capa de Red (22) Capa de Transporte (16) Capítulo 1 - Documentos HTML5 (6) Capítulo 10. API Web Storage (2) Capítulo 11. API IndexedDB (4) Capítulo 12. API File (1) Capítulo 2. Estilos CSS y modelos de caja (7) Capítulo 3. Propiedades CSS3 (4) Capítulo 4. Javascript (6) Capítulo 5. Video y audio (6) Capítulo 6. Formularios y API Forms (8) Capítulo 7. API Canvas (5) Capítulo 8. API Drag and Drop (2) Capítulo 9. API Geolocation (2) CCNA1 v5.0 (227) CCNA1 v6.0 (23) CCNA2 v5.0 (26) CCNA3 v5.0 (25) CCNA4 v5.0 (23) CD-ROM (3) Chapter 1 How does Xamarin.Forms fit in? (7) Chapter 2 Anatomy of an app (5) Cisco (329) Cloud Computing (3) CNNA v5.0 Routing & Switching (248) CNNA v6.0 Routing & Switching (2) Codigo (2) Computadora (32) Configuración (29) Configuración de un sistema operativo de red (21) Control (29) Creación de tipos de datos y tablas (3) Creación y Administración de bases de datos (3) Creando la Interface de la Aplicación Windows (50) Creating Mobile Apps with Xamarin.Forms (13) Cuenta (29) Curso (32) Curso Aprendiendo a Programar (25) Datos (3) Desarrollando en Windows 8 - AVANZADO (2) Desarrollando en Windows 8 - BÁSICO (3) Desarrollando en Windows 8 - INTERMEDIO (2) Desarrollo (2) Desarrollo .Net (21) Desarrollo avanzado de Windows Store Apps usando C# (1) Desarrollo basado en conceptos de Ingeniería de Software para Visual Studio (2) DESARROLLO DE APLICACIONES WINDOWS CON MICROSOFT .NET (37) DESARROLLO DE APLICACIONES WINDOWS CON MICROSOFT .NET (Autor: Luis Dueñas Huaroto) (29) Desarrollo en Microsoft Visual Studio (44) Desarrollo en Microsoft Visual Studio - AVANZADO (15) Desarrollo en Microsoft Visual Studio - BÁSICO (14) Desarrollo en Microsoft Visual Studio - INTERMEDIO (18) Desarrollo en Windows Phone 8 (13) Diagnostico (4) Diagrama (3) Diagramas de actividades (2) Diagramas de colaboraciones (2) Diagramas de secuencias (2) Digital (2) Diplomado (2) Disco (29) Disco Duro (4) Diseño de aplicaciones de Windows 8 en HTML 5 (7) Dispositivos Electrónicos (11) Doctorado (2) Ejemplos (3) Ejemplos de algoritmos (27) El camino hacia el CSS3 (3) El diseño web flexible (6) El elemento de diseño Canvas (3) El enfoque de los sistemas (3) El flujo de un programa (2) El gran libro de HTML5 - CSS3 y Javascript - Autor: Juan Diego Gauchat (55) El principio de organicidad (7) Electrónica (2) Elementos de un sistema (5) Empresas (2) Entrada y salida (4) Entropía y neguentropía (7) Estrategia (2) Estructura de un programa Java (12) Estructuras de almacenamiento (10) Estructuras de control (6) Estructuras de las tablas en SQL Server (2) Estructuras fundamentales de los datos (2) Ethernet (21) Evolución y Familias de los Microprocesadores (15) Exámen (23) Exploración de la red (23) Extensión de clases (4) Facebook (4) Familia Intel (15) Forefront (8) Función (3) Funciones de una red (12) Funciones de una red informática (1) Fundamentos de C# para absolutos principiantes (17) Fundamentos de programación en Java (50) Generaciones de la computadora (5) Gestión (3) Gestión de riesgos - Auditoría de Sistemas (1) GONZALO MARTÍNEZ (1) Grupos Facebook (1) Harvard (29) Historia de las computadoras (11) HTML5 y CSS3 - Autor: Christophe Aubry (99) HTML5 y CSS3 aplicadal texto (7) HTML5 y CSS3 para los formularios (15) Imágenes (2) Implementación de Windows 7 (11) Información (31) Informática (29) Ingeniería (4) Instalar (29) Inteligencia (2) Inteligencia de Negocios con SQL Server (3) Intermedio (23) Internet (29) Internet Explorer 9 (3) Introducción a ASP.NET 5 (8) Introducción a Java (7) Introducción a jQuery (8) Introducción a la Auditoría de Sistemas (2) Introducción a la teoría general de sistemas (Oscar Johansen Bertoglio) (39) Introducción a Networking (2) Introducción a Window Forms (5) Introducción al acceso a datos con ADO .NET (9) Investigación de Operaciones (12) Java (52) Jump Start de consultas en las bases de datos de Microsoft SQL Server 2012 (8) La definición de un Sistema (6) La evolución del HTML y del CSS (3) La nueva sintaxis HTML5 (12) LA QUINTA DISCIPLINA en la práctica (Autor : Peter Senge) (28) Las animaciones en CSS3 (5) Las transformaciones CSS3 (11) Las transiciones con CSS3 (8) Licenciamiento Microsoft (3) Local Area Network (LAN) - Red de Area Local (2) Lógico (2) Los elementos de la estructura en html5 (9) Los elementos multimedia: audio y vídeo (2) Los estilos de caja en CSS3 (13) Los nuevos selectores de CSS3 (6) Maestría (2) Mantenimiento de Mouse y Teclado (2) Manual de Microsoft SQL Server - Full Transact SQL (68) Manual de soporte técnico para escuelas sobre windows 7 (42) Marco Teorico de Investigación de Operaciones (6) Medios de Almacenamiento (11) Medios de Networking (2) Mejorando la Interface de las Aplicaciones Windows (26) Memoria Tipos y Clases (5) Método (2) Metodología (1) Microsoft (324) Microsoft Lync 2010 (7) Microsoft Silverlight 4.0 (2) Microsoft Virtual Academy (356) Modelo (2) Modelo OSI y TCP-IP (2) Modelos con poco grado de dificultad de Programación Lineal - Investigación de Operaciones (13) Modelos con razonable grado de dificultad de Programación Lineal - Investigación de Operaciones (10) Modelos de desafio de Programación Lineal - Investigación de Operaciones (5) Modelos difíciles de Programación Lineal - Investigación de Operaciones (5) Modelos Fáciles de Programación Lineal - Investigación de Operaciones (13) Modelos lineales con solver (3) Modulo (23) Movimiento (2) Mozilla (29) MS SQL Server (77) MS Virtualization para Profesionales VMware - Gestión (3) MS Virtualization para Profesionales VMware- Plataforma (4) MVA (263) Negocio (2) Nivel Avanzado Desarrollo .Net (6) Nivel Básico Desarrollo .Net (11) Nivel Intermedio Desarrollo .Net (8) Normas técnicas peruanas y su evolución - Auditoría de Sistemas (1) Nube Privada - Avanzado (6) Nube Privada - Básico (6) Nube Privada - Intermedio (6) Office 365 (3) Optimización de Escritorio (10) Optimización de Escritorio - Avanzado (4) Optimización de Escritorio - Básico (3) Optimización de Escritorio - Intermedio (3) ORACLE 10g - ADMINISTRACIÓN Y ANÁLISIS (3) Oracle 10g y el Grid Computing (3) Organización aleatoria y secuencial (1) Partes principales de la Mainboard (12) Perceptron (2) Perfil (2) Periféricos de Entrada / Salida (15) Pesi (2) PHP y MySQL - Manual de aprendizaje para crear un sitio web - Autor : Olivier ROLLET (79) Plan (2) Plataforma (29) PMBOK (24) PMBOK - Guía de los fundamentos para la dirección de proyectos (24) PMBOK - INFLUENCIA DE LA ORGANIZACIÓN Y CICLO DE VIDA DEL PROYECTO (6) PMBOK - Introducción (11) PMBOK - PROCESOS DE LA DIRECCIÓN DE PROYECTOS (5) Prevención - Herramientas e Instrumentos de Medida (9) Principios básicos de enrutamiento y switching (201) Proceso (2) Proceso de auditoría de sistemas informáticos (2) Programación en Android - Auor : Salvador Gómez Oliver (46) Programación paso a paso de C# - Autor : Nacho Cabanes (16) Protocolos y comunicaciones de red (17) Proyecto (2) Qué es un sistema (4) Red de Área Local Inalámbrica (WLAN) (4) Redes (30) Redes inalámbricas - WIRELESS - Conocimiento general (15) Redes neuronales (2) Redes y Comunicaciones (45) Reparación de Fuentes - UPS - Estabilizadores (10) Reparación de Impresoras (9) Reparación de Monitores (16) Router (29) Seguridad en la Nube (3) Seminario (23) Server (24) Sharepoint 2010 - Nivel Básico (6) Sharepoint 2010 - Niveles Avanzados (18) Sharepoint 2010 - Niveles Avanzados - Básico (8) Sharepoint 2010 - Niveles Avanzados - Intermedio (9) Sinergia y recursividad (4) Sistema (33) Sistema de Cableado Estructurado (9) Software (30) SOLUCIÓN GRÁFICA DE MODELOS DE PROGRAMACIÓN LINEALES - INVOPE (8) Soporte a Infraestructura (3) SQL (38) SQL Azure - Introducción (3) Subsistemas de control (4) Tablas (4) Tarjeta Principal del Sistema (10) Tarjetas de Interfaces (7) Tecnología (31) Tecnologías LAN (1) TEORÍA GENERAL DE SISTEMAS (1) Tic (2) Tipo (2) TML5 y CSS3 - Autor: Christophe Aubry (12) Trabajando con el Formulario (7) Un diseño HTML5/CSS3: dConstruct 2011 (3) Un diseño HTML5/CSS3: FlipThru (2) Un diseño HTML5/CSS3: The Cat Template (2) Usando Controles Windows Forms (12) Usando Herramientas de Datos de Visual Studio (6) Ventas (2) Virtualización Hyper - V Nivel Básico (5) Virtualización Hyper - V Nivel Intermedio (5) What’s New in Windows 8.1 Security (4) Window (29) Windows 7 Segunda Fase - AVANZADO (4) Windows 7 Segunda Fase - BÁSICO (6) Windows 7 Segunda Fase - INTERMEDIO (4) Windows 8 - Vista Previa (4) Windows 8.1 To Go (2) Windows Azure (3) Windows Phone 7 (2) Windows Server 2008 R2 (3) Windows Server 2012 - Gestión y Automatización (3) Windows Server 2012 R2 Essentials (7) Windows Server 2012: Almacenamiento (5) Windows Server 2012: Identidad y Acceso (4) Windows Server 2012: Revisión Técnica (7) Xamarin (1)

Páginas vistas en total según Google