Sie sind auf Seite 1von 12

En forma anloga a como se hace en HTML para incluir archivos .CSS o .

JS, en PHP
puede incluirse otros archivos externos dentro del actual.
De esta forma es posible distribuir funcionalidad en distintos archivos e ir
incluyndolos a medida que sea necesario en nuestro cdigo.
Existen para este propsito dos tipos de funciones: require() e include().
Ambas cargan un archivo y lo ubican en el lugar del cdigo donde se efectu la
llamada.
La diferencia est en que si el archivo no existe, include() dar un warning,
continuando con la ejecucin del programa. La funcin require() en cambio dar un
error fatal y se detendr la ejecucin.
En algunos casos, cuando hay cadenas de inclusiones, puede suceder que sin querer
intentemos incluir dos veces el mismo archivo. En ese caso nos dar un error fatal.
Para evitar este problema, es posible utilizar otra versin de las funciones:
require_once(ruta_archivo); e include_once(ruta_archivo);
Que como indican sus nombres, incluyen el archivo una nica vez. La segunda
llamada a estas funciones con el mismo archivo, simplemente no hace nada (y no
arroja errores)
Ejemplos: require_once(scripts/header.php); include utils.php;


Hasta ahora hemos trabajado con algunas funciones definidas por el lenguaje.
En PHP, como en todos los lenguajes, es posible adems de utilizar las funciones nativas,
definir funciones personalizadas.
El objetivo principal es el de agrupar bloques de cdigo (funcionalidad) de forma
ordenada para luego poder ser invocados desde distintas partes de nuestro programa
principal.
Las funciones entonces:
Son la base de la programacin procedural.
Fijaron las bases de lo que luego se llam la Programacin Orientada a Objetos.
Permite la reutilizacin de cdigo.
Encapsula conocimiento.
Estn formadas por una declaracin (nombre de funcin y lista de argumentos o
parmetros) y por una definicin del proceso.
Pueden o no devolver un resultado hacia el programa que lo invoc.
Pueden ser llamadas desde otras funciones, incluso desde el cdigo de esa misma
funcin. (recursin)

La estructura fundamental de una funcin se define con la instruccin function, seguida del
nombre de la funcin (se siguen las mismas reglas que para un nombre de variable), seguida de
un par de parntesis y un par de llaves.
Ejemplo de declaracin:

Los nombres de funcin a diferencia de las variables no son case sensitive, es decir, no
distinguen maysculas de minsculas.
Los parntesis de la funcin deben contener la lista de argumentos (tambin llamados
parmetros) que la funcin recibe y los cuales emplea para su procesamiento. Los parntesis
deben estar presentes an cuando la funcin no reciba argumentos.
Las llaves de la funcin encierran el bloque de cdigo que se ejecuta cuando la funcin es
invocada.
Si la funcin devuelve un valor, se debe utilizar la instruccin return junto al valor devuelto.
Ejemplo completo de declaracin:
function saludo($texto){
$mensaje = "Saludo: $texto";
return $mensaje;
}
function miFuncion () { }

Cuando una funcin no devuelve resultados, es decir, no contiene la instruccin return en su
bloque de cdigo, el resultado devuelto es null, en ese caso la funcin se dice que es un
procedimiento.
La instruccin return, adems de permitir definir un valor como respuesta o resultado de la
funcin, termina la ejecucin del cdigo en esa lnea. Por esto, no es adecuado escribir cdigo
despus de esta instruccin ya que nunca se ejecutar.
La invocacin de una funcin desde el cdigo principal se hace simplemente escribiendo el
nombre, y la lista de argumentos entre parntesis. Si la funcin devuelve resultados, la
invocacin conviene asignarla a alguna variable.
Los parmetros en la invocacin se denominan parmetros actuales.
Los parmetros en la declaracin de la funcin se denominan parmetros formales.
Una buena prctica es definir un nombre distinto para el parmetro actual y el formal.
Ejemplo:
function saludo($texto){
$mensaje = "Saludo: $texto";
return $mensaje;
}
$miSaludo = saludo("Hola curso");
echo $miSaludo;
Saludo: Hola curso

Cuando hablamos de funciones, necesitamos definir lo que es el mbito de una variable. Es
decir, cul es el entorno en el que la variable es accesible.
Existen tres mbitos de variables en PHP:
Variables de funcin: Se declaran en el cuerpo de una funcin y slo son accesibles desde
el bloque de dicha funcin. Si queremos acceder a ellas desde otro punto del programa
deben ser sacadas mediante la instruccin return.
Variables globales: Se declaran en el cuerpo principal del programa y son accesibles desde
cualquier punto del mismo. Son las variables de mayor mbito que existen.
Variables de clase: Se vern ms adelante cuando veamos POO, pero son accesibles
dentro de la estructura de una clase o instancia.
Ejemplos de variables locales y globales:
function ambito(){
$v1 = 10;
}
$v1 = 20;
ambito();
echo $v1;
20
function ambito(){
global $v1;
$v1 = 10;
}
$v1 = 20;
ambito();
echo $v1;
10

Como se vi en el ejemplo anterior, la instruccin global seguida de una variable permite
declararla como global, pero dentro de una funcin.
Se pueden utilizar mltiples instrucciones global en una misma funcin, o tambin utilizar una
nica instruccin y definir una lista de las variables que tendr mbito global.
Tambin es posible acceder a variables globales por medio de un arreglo nativo de PHP que se
llama $GLOBALS.
Ejemplos:
function ambito(){
$GLOBALS["v1"] = 10;
}
$v1 = 20;
ambito();
echo $v1;
10
function ambito(){
global $a, $b;
global $c;
$a = 10;
$b = 20;
$c = 30;
}
$a = 5; $b = 14;
$c = 24;
ambito();
echo "$a, $b, $c";
10, 20, 30
El uso del arreglo GLOBALS es ms correcto que utilizar la instruccin global. Esto es porque no
es conveniente usar el mismo nombre de variable dentro de una funcin que afuera de ella.

Si bien en los ejemplos se utiliz una variable como parmetro, es conveniente entender en
profundidad cmo se efecta el pasaje de parmetros entre la invocacin y la definicin de la funcin.
Cuando uno define o declara una funcin, puede especificar una lista de variables denominada lista
de parmetros formales. Estos parmetros permiten a la funcin trabajar con ellos para llegar al
resultado necesario.
Cuando en otro lugar del programa, uno escribe una instruccin para invocar a dicha funcin, debe
especificar entre parntesis, qu valores asociar a cada parmetro de la funcin. Es decir, es
necesario especificar la lista de parmetros actuales.
Cuando el intrprete llega a la invocacin, copia los valores de los parmetros actuales en cada uno
de los parmetros formales de la funcin. Ejecuta el bloque de cdigo de la misma y devuelve el
resultado hacia el invocador.
Ejemplo:

function argumentos($parametro1, $parametro2){
return $parametro1 + $parametro2;
}
$otroNumero = 30;
$resultado = argumentos(20, $otroNumero);
echo $resultado;
50
En el ejemplo: las variables $parametro1 y $parametro2 son parmetros formales,
mientras que: 20 y la variable $otroNumero son parmetros actuales.


PHP presenta algunas particularidades respecto a los parmetros de funciones que lo distinguen de otros
lenguajes.
Una de ellas es la posibilidad de darle valores default a los parmetros formales.
De esta forma, si no se le pasa un valor concreto al parmetro, ste adopta el valor por defecto definido en su
declaracin.
Ejemplo:
function argumentos($mensaje1, $mensaje2 = "Por default"){
echo $mensaje1."<br/>";
echo $mensaje2."<br/>";
}
argumentos("Hola");
argumentos("Hola", "Adis");
Hola
Por default
Hola
Adis

Como se observa en el ejemplo, si en la invocacin se da un valor al segundo
parmetro, ste se imprime, pero si no, se muestra el valor por defecto.
Slo pueden dejarse con un valor default los ltimos parmetros de la lista. No es
correcto definir un valor default para parmetros y dejar al final alguno sin default.
Si en el ejemplo anterior, $mensaje1 tuviera el valor default y $mensaje2 no, si los
errores estuvieran desactivados el resultado hubiera sido el siguiente:
Si los errores estuvieran activados arrojara un warning por ausencia del
parmetro 2 , y un notice debido a que el parmetro 2 no est definido.

Hola

Hola
Adis


La lista de parmetros formales no necesariamente debe ser igual a la de parmetros actuales.
De hecho, como se dijo, es ms correcto que estn diferenciados.
PHP con su gran flexibilidad, tambin permite que aunque nuestras funciones no tengan
definidos parmetros formales en su declaracin, puedan invocarse con parmetros actuales.
Dentro del cdigo de una funcin, para acceder automticamente a la lista de argumentos y a la
cantidad de argumentos recibidos existen dos funciones: func_get_args() y func_num_args().
Ejemplo:

function argumentos(){
$cantArgs = func_num_args();
$arrArgs = func_get_args();
$arg1 = $arrArgs[0];
echo "Nmero:$cantArgs<br/>";
echo "Primero:$arg1<br/>";
echo "Lista:<br/>";
var_dump($arrArgs);
}
argumentos("Hola", "Adis");
Esto no quiere decir que no debamos definir ms la lista de parmetros formales. Es
simplemente una herramienta ms para manipular los datos entrantes.

Nmero:2
Primero:Hola
Lista:
array(2) {
*0+ => string(4) Hola
*1+ => string(4) Adis
}

Cuando pasamos argumentos a una funcin, realmente lo que pasamos es un valor, es decir, una
expresin o el contenido de una variable. Y por lo general este valor no afecta nada en el exterior de la
funcin. Esto es lo que se llama pasaje de parmetro por valor.
En un pasaje por valor, el parmetro formal se asocia al valor del parmetro actual, y cuando finaliza
la ejecucin de la funcin, aunque el parmetro formal haya cambiado, en el mbito del invocador,
ese valor no se refleja.
PHP permite adems de pasar un parmetro por valor, pasarlo por referencia. En este caso lo que se
enva a la funcin no es el valor contenido en una variable, sino la propia variable en s (pudiendo
accederse a su espacio de memoria). Y entonces de este modo el parmetro actual s se ve afectado
por los cambios dentro de la funcin.
Para definir un parmetro formal como parmetro por referencia, es necesario utilizar el operador &
antes.
Ejemplo:
function referencia(&$cuenta){
$cuenta++;
}
function valor($cuenta){
$cuenta++;
}
$contador = 7;
valor($contador);
echo $contador;
referencia($contador);
echo $contador;
7
8
Notar que no puede enviarse un valor a un parmetro definido
por referencia. Eso arrojara un error fatal.
Eso pasara si en el ejemplo, en lugar de referencia($contador);
hubiramos puesto referencia(7);


Crear una funcin que reciba dos nmeros y retorne el producto de ambos.
Crear una funcin que reciba un arreglo de 10 nmeros y retorne la suma de ellos.
dem al anterior pero que retorne el promedio de los nmeros.
Crear una funcin que devuelva el cuadrado de un nmero. Crear otra funcin que reciba un arreglo de
5 nmeros e imprima los cuadrados de cada uno. (llamando a la funcin definida primero)
Crear una funcin llamada calculadora que reciba 3 parmetros. Los primeros deben ser 2 nmeros, y el
tercero una operacin (suma, resta, producto, divisin). La funcin debe efectuar la operacin necesaria
entre ambos nmeros y devolver el resultado al llamador. Definir como valor default de la operacin: la
suma.
Deber devolver null si la operacin da divisin por cero.
Agrupar todas las funciones anteriores en un nico archivo llamado practico6.php. Incluirlo en un
programa y llamar a todas sus funciones.
Crear una funcin que reciba 10 palabras y que las liste una abajo de la otra. No definir parmetros
formales y acceder a ellos por medio de funciones.
Crear una funcin para calcular el factorial de un nmero. Hacer que el parmetro sea por referencia.
Mostrar en pantalla el factorial de 5, de 8, de 10 y de 20.
Crear una matriz de 3x3. Almacenar nmeros en ella. Crear una funcin llamada sudoku que evale si
los nmeros van entre 1 y 9. Adicionalmente, evaluar que ninguno se repita dentro de la matriz.

Das könnte Ihnen auch gefallen