Material de Formacion PHP
Material de Formacion PHP
Material de Formacion PHP
Tabla de contenido
Referencias .......................................................................................................... 28
Descripción material del programa
Este material está diseñado para facilitar el proceso de aprendizaje, por esta
razón, los contenidos buscan que el aprendiz se apropie del conocimiento que
realmente necesita para desarrollar sus habilidades y que lo haga de una forma
sencilla y organizada; además de la lectura general cuenta con algunos apartes
que contienen: frases o datos para recordar, segmentos de código, consejos y
advertencias, estos elementos se destacan por las siguientes convenciones
gráficas:
1
La mayor parte de los segmentos de código que aparecen en este material de
formación los encuentran como archivos .php que se pueden descargar del
material complementario en la siguiente ruta: Materiales del programa / Materiales
de apoyo / Documentos complementarios / Documentos complementarios:
Actividad de aprendizaje 3
2
Mapa conceptual
3
1. Las funciones de PHP
4
Dentro de una función se pueden escribir todas las sentencias válidas de PHP,
expresiones, condicionales, ciclos e incluso dentro de una función se pueden
declarar otras.
Las funciones pueden ser escritas dentro de un código en cualquier lugar sin
importar si se hace en un punto antes o después de aquel en el que se le llama,
esto es cierto para todas las funciones excepto para aquellas que se escriben
dentro de una estructura condicional, caso en el cual dicha función solo estará
disponible cuando la condición se cumpla y el flujo del programa llegue al punto
donde está declarada la función.
Los nombres de las funciones cuando son de una sola palabra, solo deben usar
letras minúsculas, cuando consisten en más de una palabra las siguientes
después de la primera deben empezar con una letra mayúscula, lo cual se conoce
como “notacionCamello”. (Zend Technologies Ltd., s.f.)
sumaEnterosPostivos()
eliminaEspaciosCadenas()
cuentaLetrasMayusculasCadenas()
5
Los nombres de las funciones cuando son de una sola
palabra, solo deben usar letras minúsculas, cuando
consisten en más de una palabra las siguientes después de
la primera deben empezar con una letra mayúscula, lo cual
se conoce como “notacionCamello”.
Fuente: SENA
Llamar una función
Nombrar y programar una función no sirve de nada si no se la invoca en algún
punto del programa, para que el flujo de control ejecute cualquier función esta
debe ser llamada, cuando la función no retorna ningún tipo de valor, el llamado
puede hacerse simplemente poniendo el nombre y los argumentos de las
funciones (si la función no tiene argumentos simplemente se ponen los paréntesis
frente al nombre de la función), a continuación se muestra un ejemplo:
Por otro lado, si la función retorna un valor, normalmente se genera una expresión
que implica declarar una variable y/o inicializarla asignándole el valor de la función
así:
También en este último caso se puede simplemente imprimir el valor retornado por
la función así:
6
echo nombreFuncion ($arg1, $arg2, …, $argn);
sentencias después de la función
…
Ejemplo 1:
<!DOCTYPE html>
<html>
<head>
<title>Unidad 3 - Ejemplo 1</title>
<meta http-equiv="Content-Type"
content="text/html; charset=ISO-8859-1" />
</head>
<body>
<?php
/* En este programa se presenta el funcionamiento de una
función
* simple, creada por el usuario
*/
/* Intencionalmente se escribió primero el llamado a la
función antes que
* su definición con el fin de demostrar que no importa
donde se haga
* el llamado de una función, si antes o después de si
declaración
*/
imprimeTabla();
/* La función imprimeTabla() genera una tabla HTML de 3
filas por 4
* columnas con una fila de encabezado que contiene los
títulos de
* las columnas, la función no recibe argumentos ni
devuelve valores
*/
function imprimeTabla() {
?>
<table border ="1">
<thead>
<td>Nombre</td>
<td>Dirección</td>
<td>Teléfono</td>
<td>Fecha de Nacimiento</td>
</thead>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
7
<td> </td>
<td> </td>
</tr>
</table>
<?php
}
?>
</body>
</html>
Fuente: SENA
Descargue el segmento anterior del código como archivo .php del material
complementario de este programa de formación en la siguiente ruta:
2. Argumentos de funciones
En PHP las funciones tienen argumentos, como ya se dijo antes, son los
argumentos los que permiten generar funciones con altas alternativas de
reutilizables que se aplican para solucionar diferentes posibilidades de un mismo
problema. Los argumentos son información y en PHP las funciones pueden recibir
uno o varios argumentos de cualquier tipo, en el caso de tener varios argumentos
estos deben ir separados por comas y se evaluarán desde la izquierda hacia la
8
derecha, es decir que el primer argumento que se lee es el que está a la izquierda
y el último el que está a la derecha.
Como ya se dijo, cuando se declara una función se definen todos los argumentos
que la función va a recibir, estas definiciones se convierten en los contenedores de
información de la función y serán automáticamente variables que se pueden
utilizar dentro del ámbito de la función; cuando se hace el llamado de la función
será necesario enviarle los datos que van a llenar dichos contenedores (de lo
contrario se generará un error ya que la función no puede ser invocada sino se le
envía la información que requiere para ejecutarse), estos datos pueden ser
enviados de varias formas:
Paso de argumentos por valor: esta es la forma por defecto en que se pasan los
datos, simplemente para cada argumento solicitado por la función, se puede poner
un valor literal o una variable que contiene el dato así:
Declaración de la función:
Llamado de la función:
Declaración de la función:
9
sentencias de la función que modifican $edad
…
}
Llamado de la función:
Declaración de la función:
10
Ejemplo 2:
<!DOCTYPE html>
<html>
<head>
<title>Unidad 3 - Ejemplo 2</title>
<meta http-equiv="Content-Type"
content="text/html; charset=ISO-8859-1" />
</head>
<body>
<?php
/* En este programa se presenta el funcionamiento de una
función
* que recibe argumentos
*/
/* La función imprimeTabla() genera una tabla HTML de n
filas donde
* la cantidad de filas está definida por el argumento
$filas
* pero el argumento tiene un valor predefinido, así que
si el
* usuario de la función no da un valor se generará una
tabla con 3
* filas por 4 columnas con una fila de encabezado que
contiene los títulos de
* las columnas, la función no recibe argumentos ni
devuelve valores
*/
function imprimeTabla($filas = 3) {
?>
<table border ="1">
<thead>
<td>Nombre</td>
<td>Dirección</td>
<td>Teléfono</td>
<td>Fecha de Nacimiento</td>
</thead>
<?php
/* Mediante un ciclo for se pueden crear la cantidad
de filas
* que se requieran con base en el argumento $filas,
como puede
* verse esto hace el código más eficiente ya que se
requieren menos
* líneas de código que en el ejemplo anterior que
hacia algo similar
*/
for ($i = 1; $i <= $filas; $i++) {
?>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<?php
}
?>
</table>
<?php
11
}
/* Se llama la función sin poner argumento por lo que se
tomará el valor
* predefinido 3 que será el número de filas de la tabla
*/
imprimeTabla();
/* Se llama la función poniendo como argumento 5 que sepa el
número de
* filas de la tabla
*/
imprimeTabla(5);
?>
</body>
</html>
Fuente: SENA
Descargue el segmento anterior del código como archivo .php del material
complementario de este programa de formación en la siguiente ruta:
Cree y utilice una función que reciba un argumento por referencia y otro con valor
predeterminado, recuerde que el parámetro con valor predeterminado debe ir a la
derecha en la declaración de la función.
12
Los argumentos opcionales no deben ponerse nunca a la
izquierda de los demás, ya que no tendrían ningún sentido
pues nunca podrían dejarse en blanco, no se puede hacer
un llamado de una función de la forma: funcion( , ,
$a, $b);
Fuente: SENA
3. Devolviendo valores
Declaración de la función:
Llamado de la función:
13
Varias instrucciones return condicionadas
Declaración de la función:
Llamado de la función:
Ejemplo 3:
<!DOCTYPE html>
<html>
<head>
<title>Unidad 3 - Ejemplo 3</title>
<meta http-equiv="Content-Type"
content="text/html; charset=ISO-8859-1" />
</head>
<body>
<?php
/* En este programa se presenta el funcionamiento de una
función
* que devuelve datos luego de su ejecución
*/
/* encuentraValorArreglo() es una función que recibe un
arreglo
* y un valor para buscar el valor dentro del arreglo
enviado
* Esta función ya está programada en la biblioteca de PHP
pero
* la codificamos aquí a modo de ejemplo de una función
que retorna
* valores, al función retorna TRUE si encuentra el valor
en el arreglo
* y FALSE si no lo encuentra
*/
function encuentraValorArreglo($arreglo, $valorBuscado) {
14
foreach ($arreglo as $valor) {
if ($valor == $valorBuscado) {
return TRUE;
}
}
return FALSE;
}
// Se declara un arreglo con datos para poder buscar en el
$arregloAnimales = array(
"Perro",
"Gato",
"Liebre",
"Conejo",
"Vaca",
"Lobo",
"Abeja",
"Oveja",
"Pollo"
);
//Se declaran dos variables con datos a ser buscados en el
arreglo
$animalQueEsta = "Vaca";
$animalQueNoEsta = "Leon";
/* Se usa el valor retornado por la variable como
expresión para
* un condicional en este caso el valor a buscar si está
dentro del
* arreglo por lo tanto la función retornará TRUE lo que
hará que
* la condición se cumpla
*/
if (encuentraValorArreglo($arregloAnimales,
$animalQueEsta)) {
echo "$animalQueEsta si se encuentra en el arreglo <br
/>";
}
/* En este caso el valor a buscar no estará en el arreglo,
por ello
* debe utilizarse una negación pues la función retornará
FALSE
* que al ser negado se convierte en TRUE y hace que la
condición
* se cumpla
*/
if (!encuentraValorArreglo($arregloAnimales,
$animalQueNoEsta)) {
echo "$animalQueNoEsta no se encuentra en el arreglo";
}
?>
</body>
</html>
Fuente: SENA
Descargue el segmento anterior del código como archivo .php del material
complementario de este programa de formación en la siguiente ruta:
Materiales del programa / Materiales de apoyo / Documentos complementarios /
Documentos complementarios: Actividad de aprendizaje 3 / Ejemplo 3
15
Figura 3. Ejecución del ejemplo 3
Fuente: SENA
funcionesArreglos.php
<?php
funcionUno ($arg1, $arg2, …, $argn)
{
16
sentencias de la funcionUno
…
}
funcionDos ($arg1, $arg2, …, $argn)
{
sentencias de la funcionDos
…
}
funcionTres ($arg1, $arg2, …, $argn)
{
sentencias de la funcionTres
…
}
funcionN ($arg1, $arg2, …, $argn)
{
sentencias de la funcionN
…
}
…
En el ejemplo anterior se obvió la etiqueta de cierre de php ¿>, esto es una buena
práctica de desarrollo que impide al momento de vincular este archivo con otro, se
incluyan posibles espacios en blanco en la respuesta.
Fuente: SENA
Las funciones del sistema que permiten vincular archivos .php son:
17
actual (comenzando con . o ..) — el include_path será ignorado por
completo. Por ejemplo, si un nombre de archivo comienza con ../, el
intérprete buscará en el directorio padre para encontrar el archivo
solicitado.
18
En cuanto al uso de las sentencias include o require hay diferentes opiniones,
algunos expertos creen que lo mejor es utilizar siempre la opción require, ya
que si el código que se está escribiendo depende absolutamente de lo que se
contiene en el archivo a vincular será referible que el script se detenga (así sea
abruptamente), a que continúe y genere errores lógicos, pero otros dicen que un
error fatal de terminación del programa como el que podría generar require al no
encontrar el archivo vinculado podría crear peores desastres en el funcionamiento
del aplicativo en general, así que es necesario que en la lógica del sistema que se
está desarrollando se evalúe muy bien cuál de las dos opciones es la mejor. En lo
que sí están de acuerdo la mayoría, es que son mejores las versiones
include_once y require_once, teniendo en cuenta que evitan la instanciación
múltiple de los archivos a vincular, cuando se necesitan en varios puntos de la
aplicación mejorando un poco la eficiencia del servidor.
include(funcionesArreglos.php);
include_once(funcionesArreglos.php);
require(funcionesArreglos.php);
require_once(funcionesArreglos.php);
Fuente: SENA
19
Ejemplo 4:
<!DOCTYPE html>
<html>
<head>
<title>Unidad 3 - Ejemplo 4</title>
<meta http-equiv="Content-Type"
content="text/html; charset=ISO-8859-1" />
</head>
<body>
<?php
/* En este programa se muestra cómo se pueden usar
bibliotecas de
* funciones creadas por el usuario, solo hace falta
recopilar
* las funciones en un archivo .php y luego incluirlo o
requerirlo
* dentro del archivo donde se van a requerir las
funciones
*/
20
* en un arreglo que contenga el color su significado y
que en
* una columna de la tabla se ponga el significado del
color
* la siguiente función hace todo eso, pero no está dentro
de este
* mismo archivo sino en el archivo
ejemplo_4_Biblioteca.php
* que fue requerido al inicio
*/
muestraListadoTabla($listadoAmigos);
?>
</body>
</html>
Fuente: SENA
Descargue el segmento anterior del código como archivo .php del material
complementario de este programa de formación en la siguiente ruta:
Ejemplo 4 - Biblioteca:
<?php
/* Esta es una biblioteca de funciones que están diseñadas para
mostrar
* los datos de un arreglo que contiene un listado de personas y
ciertos datos
* específicos, y permite buscar uno de los datos que es el color
favorito
* en un arreglo que contiene los colores y su significado
mostrando en la tabla
* el significado del color favorito de cada persona del listado
*/
function encuentraSignificadoColor($colorBuscado) {
/* Inicialización del arreglo que contiene los colores y los
significados
* respectivos de cada color
*/
$coloresSignifcado = array(
array(
"color" => "Amarillo",
"significado" => "Alegria, riqueza"
),
array(
"color" => "Verde",
21
"significado" => "Esperanza"
)
);
function muestraListadoTabla($listado) {
?>
<table border ="1">
<thead>
<td>Nombre</td>
<td>Dirección</td>
<td>Teléfono</td>
<td>Fecha de Nacimiento</td>
<td>Color Favorito</td>
<td>Significado</td>
</thead>
<?php
/* Mediante un ciclo for se pueden crear la cantidad de filas
* que se requieran con base en el argumento $filas, como
puede
* verse esto hace el código más eficiente ya que se requieren
menos
* líneas de código que en el ejemplo anterior que hacia algo
similar
*/
foreach ($listado as $registro) {
?>
<tr>
<td><?php echo $registro['nombre']; ?></td>
<td><?php echo $registro['direccion']; ?></td>
<td><?php echo $registro['telefono']; ?></td>
<td><?php echo $registro['fechaNacimiento']; ?></td>
<td><?php echo $registro['colorFavorito']; ?></td>
<td>
<?php
/* En este punto se hace el llamado a la función
* encuentraSignificadoColor() que está en esta
22
misma
* biblioteca, y que retorna el significado del
color
* favorito o un mensaje en caso de no encontrarlo
*/
echo
encuentraSignificadoColor($registro['colorFavorito']);
?>
</td>
</tr>
<?php
}
?>
</table>
<?php
}
Fuente: SENA
Descargue el segmento anterior del código como archivo .php del material
complementario de este programa de formación en la siguiente ruta:
Ejercicio 3:
Con base en el ejemplo anterior, cree una función que muestre en una tabla
cualquier arreglo de tipo matriz, sin importar el número de filas o columnas que
tenga, en este caso no se requiere que la tabla tenga una fila en la que estén los
23
títulos de cada columna, solo que se muestren los datos ordenadamente. Al igual
que en el ejemplo la función está en un archivo aparte.
Cada página del manual también tiene información específica para cada
función, como información sobre parámetros de funciones, cambios de
comportamiento, valores devueltos en caso de éxito o fallo, e información
de disponibilidad. Conocer estas importantes diferencias (a menudo
imperceptibles) es crucial para escribir código de PHP correcto. (The PHP
Group, s.f.)
24
Ejemplo 5:
<!DOCTYPE html>
<html>
<head>
<title>Unidad 3 - Ejemplo 5</title>
<meta http-equiv="Content-Type"
content="text/html; charset=ISO-8859-1" />
</head>
<body>
<p>
<h3>Ejemplo de la función date()</h3>
<?php
/* En este programa se muestra el uso de algunas funciones
* de la biblioteca de PHP
*/
/* La función date() devuelve la fecha y hora del sistema
* requiere un parámetro de tipo cadena que indica la
forma en la
* que se debe mostrar la información devuelta
*/
echo date('D, d M Y H:i:s');
?>
</p>
<p>
<h3>Ejemplo de la función print_r()</h3>
<?php
/* Se inicializa un arreglo para poder utilizar algunas
funciones
* que nos permiten procesarlos
*/
$arregloAnimales = array(
"Perro",
"Gato",
"Liebre",
"Conejo",
"Vaca",
"Lobo",
"Abeja",
"Oveja",
"Pollo"
);
/* La función print_r() muestra en el navegador todo el
* contenido del arreglo
*/
print_r($arregloAnimales);
?>
</p>
<p>
<h3>Ejemplo de la función asort()</h3>
<?php
/* La función asort() ordena el arreglo que se pasa como parámetro
* pero no usa la instrucción return, ya que recibe el arreglo
como
* parámetro por referencia, es decir, que el arreglo ordenado
* queda almacenado en el mismo arreglo que se envió, por esa
razón si
* volvemos a imprimir el mismo arreglo se muestra ahora ordenado,
* pero podremos notar que la función solo reordena las posiciones
* de los elementos en el arreglo sin modificar los índices
*/
25
asort($arregloAnimales);
print_r($arregloAnimales);
?>
</p>
<p>
<h3>Ejemplo de la función isset()</h3>
<?php
/* La función isset() evalúa si una variable ya ha sido
* inicializada y devuelve un valor lógico, es supremamente
* útil para evitar errores lógicos
*/
$a = "Si estoy inicializada";
if (isset($a)) {
echo "La variable \$a si esta inicializada <br />";
}
if (!isset($b)) {
echo "La variable \$b no está inicializada";
}
?>
</p>
</body>
</html>
Fuente: SENA
Descargue el segmento anterior del código como archivo .php del material
complementario de este programa de formación en la siguiente ruta:
26
Ejercicio 4:
27
Referencias
Zend Technologies Ltd. (s.f.). Zend Framework Coding Standard for PHP.
Consultado el 30 de junio de 2015, en
http://framework.zend.com/manual/1.10/en/coding-standard.html
Centro Metalmecánico
Jorge Luis Diciembre
Autor Instructor Regional Distrito
Ballesteros Vargas de 2014
Capital
Guionista -
Paola Andrea Centro Agroindustrial Junio de
Adaptación Línea de
Bobadilla Gutiérrez Regional Quindío 2015
producción
28