UD 2 El lenguaje PHP. 5 Funciones
Duración Estimada: 8 sesiones, 16 horas
RA2 Escribe sentencias ejecutables por un servidor Web reconociendo y aplicando procedimientos de integración del código en lenguajes de marcas.
- A Se han reconocido los mecanismos de generación de páginas Web a partir de lenguajes de marcas con código embebido.
- B Se han identificado las principales tecnologías asociadas.
- C Se han utilizado etiquetas para la inclusión de código en el lenguaje de marcas.
- D Se ha reconocido la sintaxis del lenguaje de programación que se ha de utilizar.
- E Se han escrito sentencias simples y se han comprobado sus efectos en el documento resultante.
- F Se han utilizado directivas para modificar el comportamiento predeterminado.
- G Se han utilizado los distintos tipos de variables y operadores disponibles en el lenguaje.
- H Se han identificado los ámbitos de utilización de las variables.
RA3 Escribe bloques de sentencias embebidos en lenguajes de marcas, seleccionando y utilizando las estructuras de programación.
- A Se han utilizado mecanismos dedecisión en la creación de bloques de sentencias.
- B Se han utilizado bucles y se ha verificado su funcionamiento.
- C Se han utilizado «arrays» para almacenar y recuperar conjuntos de datos.
- D Se han creado y utilizado funciones.
- E Se han utilizado formularios Web para interactuar con el usuario del navegador Web.
- F Se han empleado métodos para recuperar la información introducida en el formulario.
- G Se han añadido comentarios al código
OBJETIVOS SEMANALES
Instalar Entorno PHP
Crear y compartir Repositorio GitHub
Primeros programas PHP y subir al repositorio
Introducción
En la clase anterior estudiamos cómo mostrar datos por pantalla y algunas de las funciones más especiales. En la clase de hoy, veremos bucles, condicionales y otras estructuras de control del flujo.
1 Funciones
Cuando quieres repetir la ejecución de un bloque de código, puedes utilizar un bucle. Las funciones tienen una utilidad similar: nos permiten asociar una etiqueta (el nombre de la función) con un bloque de código a ejecutar. Además, al usar funciones estamos ayudando a estructurar mejor el código. Como ya sabes, las funciones permiten crear variables locales que no serán visibles fuera del cuerpo de las mismas.
Creación y Ejecución de funciones. (function)
Ya sabes que, para hacer una llamada a una función, basta con poner su nombre y unos paréntesis: phpinfo();
Para crear tus propias funciones, deberás usar la palabra function .
En PHP no es necesario que definas una función antes de utilizarla, excepto cuando está condicionalmente definida como se muestra en el siguiente ejemplo:
Cuando una función está definida de una forma condicional sus definiciones deben ser procesadas antes de ser llamadas. Por tanto, la definición de la función debe estar antes de cualquier llamada.
Argumentos
En el ejemplo anterior en la función usabas una variable global , lo cual no es una buena práctica. Siempre es mejor utilizar argumentos o parámetros al hacer la llamada. Además, en lugar de mostrar el resultado en pantalla o guardar el resultado en una variable global, las funciones pueden devolver un valor usando la sentencia return . Cuando en una función se encuentra una sentencia return , termina su procesamiento y devuelve el valor que se indica.
Puedes reescribir la función anterior de la siguiente forma:
Los argumentos se indican en la definición de la función como una lista de variables separada por comas. No se indica el tipo de cada argumento, al igual que no se indica si la función va a devolver o no un valor (si una función no tiene una sentencia return , devuelve null al finalizar su procesamiento).
Argumentos por defecto y por referencia
Al definir la función, puedes indicar valores por defecto para los argumentos, de forma que cuando hagas una llamada a la función puedes no indicar el valor de un argumento; en este caso se toma el valor por defecto indicado.
Puede haber valores por defecto definidos para varios argumentos, pero en la lista de argumentos de la función todos ellos deben estar a la derecha de cualquier otro argumento sin valor por defecto.
En los ejemplos anteriores los argumentos se pasaban por valor . Esto es, cualquier cambio que se haga dentro de la función a los valores de los argumentos no se reflejará fuera de la función. Si quieres que esto ocurra debes definir el parámetro para que su valor se pase por referencia , añadiendo el símbolo & antes de su nombre.
php
//ARGUMENTOS POR valor y por referencia
print "<br/><br/> ARGUMENTOS POR valor y por referencia <br /> ";//ARGUMENTOS POR DEFECTO
function precio_iva_referencia (&$precio /*le pasas su direcion de memoria 100325*/, $iva=0.21) {
$precio *= (1 + $iva);
// No es necesario usar ningún return
}
$precio = 10; //100325
print "<br/><br/>1- ANTES de llamar a la función: El precio con IVA es ".$precio ; //10
precio_iva_referencia($precio);
print "<br/>2- DESPUES de llamar a la función: El precio con IVA es ". $precio ; //121
Inclusión de ficheros externos (include/require).
Conforme vayan creciendo los programas que hagas, verás que resulta trabajoso encontrar la información que buscas dentro del código. En ocasiones resulta útil agrupar ciertos grupos de funciones o bloques de código, y ponerlos en un fichero aparte. Posteriormente, puedes hacer referencia a esos ficheros para que PHP incluya su contenido como parte del programa actual.
Para incorporar a tu programa contenido de un archivo externo, tienes varias posibilidades:
- include : Evalúa el contenido del fichero que se indica y lo incluye como parte del fichero actual, en el mismo punto en que se realiza la llamada. La ubicación del fichero puede especificarse utilizando una ruta absoluta, pero lo más usual es con una ruta relativa. En este caso, se toma como base la ruta que se especifica en la directiva include_path del fichero php.ini . Si no se encuentra en esa ubicación, se buscará también en el directorio del guión actual, y en el directorio de ejecución.
- include_once: Si por equivocación incluyes más de una vez un mismo fichero, lo normal es que obtengas algún tipo de error (por ejemplo, al repetir una definición de una función). include_once funciona exactamente igual que include , pero solo incluye aquellos ficheros que aún no se hayan incluido.
- require : Si el fichero que queremos incluir no se encuentra, include da un aviso y continua la ejecución del guión. La diferencia más importante al usar require es que en ese caso, cuando no se puede incluir el fichero, se detiene la ejecución del guión.
- require_once . Es la combinación de las dos anteriores. Asegura la inclusión del fichero indicado solo una vez, y genera un error si no se puede llevar a cabo.
Muchos programadores utilizan la doble extensión .inc.php para aquellos ficheros en lenguaje PHP cuyo destino es ser incluidos dentro de otros, y nunca han de ejecutarse por sí mismos.
Actividad
Actividad
Crea una estructura con dos ficheros donde uno sea incluido parecida a la del ejemplo y ejecútala
Prueba todas estas características en uno o varios scripts HTML+PHP en la ruta -SemanaN/inclusionFicheros/nombredetuscripts.php
Funciones PHP Más usadas.
A continuación se enlazan varios artículos donde relacionan algunas de las funciones nativas de PHP más utilizadas
- [ ] Funciones más usadas (Aula Clic)
- [ ] Funciones nativas de PHP más usadas I. (Artesanía Web)
- [ ] Las 20 funciones PHP más utilizadas por Symfony (Synfony.es)
Actividad
Actividad
Prueba al menos 8 de estas características en uno o varios scripts HTML+PHP en la ruta -Semana2/funciones/MasUsadas/nombredetuscripts.php
En clase, cada alumno/a mostrará un ejemplo de al menos una función que no se haya visto
Extensiones
Como programador puedes aprovecharte de la gran cantidad de funciones disponibles en PHP . De éstas, muchas están incluidas en el núcleo de PHP y se pueden usar directamente. Otras muchas se encuentran disponibles en forma de extensiones , y se pueden incorporar al lenguaje cuando se necesitan.
Con la distribución de PHP se incluyen varias extensiones. Para poder usar las funciones de una extensión, tienes que asegurarte de activarla mediante el uso de una directiva extensión en el fichero php.ini . Muchas otras extensiones no se incluyen con PHP y antes de poder utilizarlas tienes que descargarlas.
Para obtener extensiones para el lenguaje PHP puedes utilizar PECL. PECL es un repositorio de extensiones para PHP. Junto con PHP se incluye un comando pecl que puedes utilizar para instalar extensiones de forma sencilla:
Instalar extensiones
Extensiones
Por ahora no dedicaremos tiempo en clase para instalar alguna extensión hasta que no sean requeridas
Puedes indagar un poco más al respecto en
- https://www.php.net/manual/es/install.pecl.windows.php
- https://pecl.php.net/
- https://diego.com.es/extensiones-en-php,
2 Arrays
RA3: Escribe bloques de sentencias embebidos en lenguajes de marcas, seleccionando y utilizando las estructuras de programación. C.Ev. C Se han utilizado «arrays» para almacenar y recuperar conjuntos de datos..
Un tipo de datos compuesto es aquel que te permite almacenar más de un valor. En PHP puedes utilizar dos tipos de datos compuestos: el array y el objeto . Los objetos los veremos más adelante; vamos a empezar con los arrays.
Un array es un tipo de datos que nos permite almacenar varios valores. Cada miembro del array se almacena en una posición a la que se hace referencia utilizando un valor clave. Las claves pueden ser numéricas o asociativas.
La clave puede ser un integer o un string. El valor puede ser de cualquier tipo.
Para hacer referencia a los elementos almacenados en un array, tienes que utilizar el valor clave entre corchetes :
php
Ejemplo #1 Un array simple
<?php
$array = array(
"foo" => "bar",
"bar" => "foo",
);
// a partir de PHP 5.4
$array = [
"foo" => "bar",
"bar" => "foo",
];
?>
Info
En PHP existe la función print_r , que nos muestra todo el contenido del array que le pasamos. Es muy útil para tareas de depuración.
Arrays Multidimensionales
Los arrays anteriores son vectores, esto
es, arrays unidimensionales. En PHP puedes crear también arrays de varias
dimensiones almacenando otro array en cada uno de los elementos
de un array.
Para hacer referencia a los elementos almacenados en un array multidimensional , debes indicar las claves para cada una de las dimensiones
En PHP no es necesario que indiques el tamaño del array antes de crearlo. Ni siquiera es necesario indicar que una variable concreta es de tipo array. Simplemente puedes comenzar a asignarle valores:
Ni siquiera es necesario que especifiques el valor de la clave. Si la omites, el array se irá llenando a partir de la última clave numérica existente, o de la posición 0 si no existe ninguna:
Recorrer Arrays (foreach)
Las cadenas de texto o strings se pueden tratar como arrays en los que se almacena una letra en cada posición, siendo 0 el índice correspondiente a la primera letra, 1 el de la segunda, etc.
Para recorrer los elementos de un array, en PHP puedes usar un bucle específico: foreach . Utiliza una variable temporal para asignarle en cada iteración el valor de cada uno de los elementos del array. Puedes usarlo de dos formas.
Solo elementos
· Recorriendo sólo los elementos:
Clave - Valor
· O recorriendo sus valores clave y sus elementos de forma simultánea:
Pero en PHP también hay otra forma de recorrer los valores de un array. Cada array mantiene un puntero interno, que se puede utilizar con este fin. Utilizando funciones específicas, podemos avanzar, retroceder o inicializar el puntero , así como recuperar los valores del elemento (o de la pareja clave / elemento) al que apunta el puntero en cada momento.
Algunas de estas funciones son:
Funciones para recorrer Arrays (next, prev…)]
each ha sido eliminado desde la versión 8 de PHP;
Las funciones reset , next , prev y end , además de mover el puntero interno devuelven, al igual que current , el valor del nuevo elemento en que se posiciona. Si al mover el puntero te sales de los límites del array (por ejemplo, si ya estás en el último elemento y haces un next ), cualquiera de ellas devuelve false . Sin embargo, al comprobar este valor devuelto no serás capaz de distinguir si te has salido de los límites del array, o si estás en una posición válida del array que contiene el valor "false".
La función key devuelve null si el puntero interno está fuera del array.
Funciones datos compuestos (array, unset…)]()
Además de asignando valores directamente, la función array permite crear un array con una sola línea de código , tal y como vimos anteriormente. Esta función recibe un conjunto de parámetros, y crea un array a partir de los valores que se le pasan. Si en los parámetros no se indica el valor de la clave, crea un array numérico (con base 0). Si no se le pasa ningún parámetro, crea un array vacío.
Una vez definido un array puedes añadir nuevos elementos y modificar los ya existentes (utilizando el índice del elemento a modificar). También se pueden eliminar elementos de un array utilizando la función unset .
En el caso de los arrays numéricos, eliminar un elemento significa que las claves del mismo ya no estarán consecutivas.
La función array_values recibe un array como parámetro, y devuelve un nuevo array con los mismos elementos y con índices numéricos consecutivos con base 0.
Para comprobar si una variable es de tipo array, utiliza la función is_array . Para obtener el número de elementos que contiene un array, tienes la función count .
Si quieres buscar un elemento concreto dentro de un array, puedes utilizar la función in_array . Recibe como parámetros el elemento a buscar y la variable de tipo array en la que buscar, y devuelve true si encontró el elemento o false en caso contrario.
Otra posibilidad es la función array_search , que recibe los mismos parámetros pero devuelve la clave correspondiente al elemento, o false si no lo encuentra.
Y si lo que quieres buscar es una clave en un array, tienes la función array_key_exists , que devuelve true o false.
Actividad
Actividad
Prueba todas estas características en uno o varios scripts HTML+PHP en la ruta
Semana2/arrays/nombredetuscripts.php
Actividad Entregable
Entregable
Tienes la info en la sección "Actividad entregable"