|
|
| (38 revisiones intermedias por el mismo usuario no mostrado) |
| Línea 1: |
Línea 1: |
| − | ==Funciones==
| |
| − | <br />
| |
| − | {{MRM_Objetivo|
| |
| − | ;Las funciones es un elemento fundamental
| |
| − | *Permite crear código modular
| |
| − | *Una forma de estructurar nuestro programa
| |
| − | }}
| |
| − | </div>
| |
| | | | |
| − | <div class=slide> | + | __NOTOC__ |
| − | ===Declaración de funciones=== | + | [[Archivo:ciclo_dwes.png|center|400px]] |
| − | <source lang=php>
| + | <hr /> |
| − | function nombreFuncion ($paramFormal1, $paramFormal2 ,...){
| + | {{Indice2| |
| − | //Instrucciones de la función
| + | Titulo= Herramientas de apoyo para el desarrollo web |
| − | return $valorRetorno //Opcionalmente en caso de que devuelva algún valor la función
| + | |Listado= |
| − | }
| + | #[[Usuario:ManuelRomero/ProgramacionWeb/Vesta|Vesta: Administración de sitios web]] |
| − | </source> | + | #[[Usuario:ManuelRomero/ProgramacionWeb/ComandosLinux|Anexo 1.- Comando de linux que usamos]]<br> |
| | | | |
| − | </div>
| |
| − | <div class=slide>
| |
| − | *Es importante diferenciar entre declarar una función e invocar a una función
| |
| − | *Algo obvio, pero importante
| |
| − | *En la declaración tenemos tres partes
| |
| − | #nombre o identificación de funciones
| |
| − | #parámetros formales entre paréntesis (Estos han de existir, aunque no haya parámetros)
| |
| − | #Cuerpo de la función, dentro de él puede estar la instrucción return, en cuyo momento termina la ejecución de la función y se vuelve a la siguiente instrucción del programa, siguiente a la invocación de la función.
| |
| − | </div>
| |
| − |
| |
| − |
| |
| − | <div class=slide>
| |
| − | ;Identificador de función
| |
| − | * El nombre de función es un identificador que empieza por una letra o guión bajo, seguido 0 o muchas letras, números o guiones bajos
| |
| − | {{Tip|Expresión regular para el identificador de funciones
| |
| − | '''''[a-zA-Z_f_][a-zA-Z0-9_]*'''''
| |
| | }} | | }} |
| − | </div>
| |
| − | <div class=slide>
| |
| − | ;Parámetros formales
| |
| − | *Son nombres de variables que usaré al escribir el código o cuerpo de la función
| |
| − | *El nombre ha de ser significativo y se convertirán en variables locales a la función
| |
| − | *Una vez que se termina la función estas variables desaparecerán de memoria
| |
| − | {{MRM_Puntos clave|Title=parámetros formales|
| |
| − | Los parámetros formales son variables locales a la función}}
| |
| − | </div>
| |
| − | ===Proceso de creación / invocación de una función===
| |
| − | ;Lo primero es declarar una función
| |
| − | *Esto implica dejar una zona de memoria identificada con el nombre de la función
| |
| − | *En contenido de esas posiciones de memoria serán las acciones de la función
| |
| − | *Estas acciones estarán establecidas no con valores reales, sino con los parámetros de la declaración
| |
| − | *Estos parámetros se conocen como parámetros formales
| |
| − | [[Archivo:declaracion_funcion.png]]
| |
| − | ;Invocación de función
| |
| − | *Es un tipo de instrucción, invocar a una acción o función.
| |
| − | [[Archivo:invocacion_funcion_1.png]]
| |
| − | *lo primero que ocurrirá es que voy a esa zona de memoria
| |
| − | [[Archivo:invocacion_funcion_2.png]]
| |
| − | *Lo siguiente es dar los valores reales (de la invocación) a los parámetros de la función (de la declaracion.
| |
| − | [[Archivo:invocacion_funcion_3.png]]
| |
| − | *Una vez que la función termina de ejecutarse, se retornará a la instrucción siguiente de la invocación
| |
| − | *Si la función devuelve algún valor, se recogerá y asignará a la variable de la instrucción de asignación desde la cual se invocó
| |
| − |
| |
| − |
| |
| − |
| |
| − |
| |
| − | <div class=slide>
| |
| − | {{MRM_Actividad|Title=Ejercicio usando funciones|
| |
| − | '''''Haz un programa donde en el programa principal se creen dos variables $a y $b'''''
| |
| − | *Crea una función que reciba como parámetros locales '''''$a''''' y '''''$b'''''
| |
| − | *La función visualizará el valor de las variables, las modificará y las volverá a visualizar
| |
| − | *El programa principal
| |
| − | #asignará valor a las variables
| |
| − | #las visualizará
| |
| − | #invocará a la función
| |
| − | #volverá a visualizar las variables
| |
| − | }}
| |
| − | </div>
| |
| − | <div class=slide>
| |
| − | *Una posible solución
| |
| − | <source lang=php> <?php
| |
| − | function a($a, $b){
| |
| − | echo "Dentro de la función visualizando valores <hr />";
| |
| − | echo "Valor de los parámetros \$a = $a \$b = $b <br />";
| |
| − | $a+=5;
| |
| − | $b+=5;
| |
| − | echo "Valor de los parámetros \$a = $a \$b = $b <br />";
| |
| − | echo "Salgo de la función";
| |
| − | }
| |
| − | //Ahora considero programa principal
| |
| − | $a=100;
| |
| − | $b=200;
| |
| − | echo "En el main antes de invocar a la función visualizando variables<hr />";
| |
| − | echo "Valor de variables \$a = $a \$b = $b <br />";
| |
| − | a($a,$b);
| |
| − | echo "En el mail después de invocar a la función visualizando variables<hr />";
| |
| − | echo "Valor de variables \$a = $a \$b = $b <br />";
| |
| − | ?>
| |
| − | </source>
| |
| − | </div>
| |
| − |
| |
| − | <div class=slide>
| |
| − |
| |
| − | ===Parámetros formales: Valores y referencias===
| |
| − | *Cómo hemos visto, los parámetros formales son valores pasados en la invocación a la función
| |
| − | *Si queremos que la función pueda modificar el valor de los valores de los parámetros, en este caso hemos de pasarlos por referencia
| |
| − | *En este caso lo que ocurre en realidad es que pasamos la dirección de memoria dónde se guarda el valor.
| |
| − | *La dirección de memoria, no la podremos visualizar ni operar con ella, pues en php no existe la aritmética de punteros o direcciones de memoria
| |
| − | </div>
| |
| − |
| |
| − | <div class=slide>
| |
| − | ;Parámetros formales: Valores y referencias
| |
| − | Para pasar el parámetro por referencia, simplemente hay que poner el símbolo de dirección de memoria '''''&''''' antes del nombre de la variable en la declaración de parámetros
| |
| − | <source lang=php>
| |
| − | function nombre_funcion(&$paramRef1, &$paramRef2, $paramVal1){
| |
| − | ...
| |
| − | }
| |
| − | </source>
| |
| − | </div>
| |
| − |
| |
| − |
| |
| − | <div class=slide>
| |
| − | {{MRM_Actividad|Title=Ejercicio usando funciones parámetros|
| |
| − | '''''Haz un programa donde en el programa principal se creen dos variables $a y $b y $c'''''
| |
| − | *Crea una función que reciba como parámetros locales '''''&$num1''''','''''&$num2''''' y '''''$num3'''''
| |
| − | *La función visualizará el valor de las variables, las modificará y las volverá a visualizar
| |
| − | *El programa principal
| |
| − | #asignará valor a las variables
| |
| − | #las visualizará
| |
| − | #invocará a la función
| |
| − | #volverá a visualizar las variables
| |
| − | }}
| |
| − | </div>
| |
| − | <source lang=php>
| |
| − |
| |
| − | <?php
| |
| − | function a(&$num1, &$num2, $num3){
| |
| − | echo "Dentro de la función visibilizando valores <hr />";
| |
| − | echo "Valor de los parámetros \$num1 = $num1 \$num2 = $num2 \$num3 = $num3<br />";
| |
| − | $num1+=5;
| |
| − | $num2+=5;
| |
| − | $num3+=5;
| |
| − |
| |
| − | echo "Valor de los parámetros \$num1 = $num1 \$num2 = $num2 \$num3 = $num3<br />";
| |
| − | echo "Salgo de la función";
| |
| − | }
| |
| − | //Ahora considero programa principal
| |
| − | $a=100;
| |
| − | $b=200;
| |
| − | $c=300;
| |
| − | echo "En el main antes de invocar a la función visualizando variables<hr />";
| |
| − | echo "Valor de variables \$a = $a \$b = $b \$c = $c <br />";
| |
| − | a($a,$b,$c);
| |
| − | echo "En el mail después de invocar a la función visualizando variables<hr />";
| |
| − | echo "Valor de variables \$a = $a \$b = $b \$c = $c <br />";
| |
| − | ?>
| |
| − | </source>
| |
| − | <div class=slide>
| |
| − | ;Invocando funciones
| |
| − | *Una vez creada una función la podemos invocar como si fuera una instrucción del lenguaje
| |
| − | *No sin razón en determinados ambientes se conoce a las funciones y procedimientos como instrucciones virtuales ...
| |
| − | *En php puedo invocar a una función antes de declararla, siempre que la declare en el mismo fichero
| |
| − | </div>
| |
| − |
| |
| − | <div class=slide>
| |
| − |
| |
| − |
| |
| − | {{MRM_Ejemplo|Title = ejemplo invocación a funciones|
| |
| − | {{Tip|Este código funcionará correctamente}}
| |
| − | <source lang=php>
| |
| − | <?php
| |
| − | a(5,6);
| |
| − | /*Mas instrucciones*/
| |
| − | function a ($a, $b){
| |
| − | echo "valor de $a";
| |
| − | echo "valor de $b";
| |
| − | }
| |
| − | </source>
| |
| − | }}
| |
| − | </div>
| |
| − |
| |
| − | <div class=slide>
| |
| − |
| |
| − | {{MRM_Ejemplo|Title = ejemplo invocación a funciones|
| |
| − | {{Tip|Este código no funcionará }}
| |
| − | <source lang=php>
| |
| − | <?php
| |
| − | a(5,6);
| |
| − | /*Mas instrucciones*/
| |
| − | include ("funciones.php");
| |
| − | ?>
| |
| − | </source>
| |
| − | *Contenido del ficheor funciones.php
| |
| − | <source lang=php>
| |
| − | <?php
| |
| − | function a ($a, $b){
| |
| − | echo "valor de $a";
| |
| − | echo "valor de $b";
| |
| − | }
| |
| − | ?>
| |
| − | </source>
| |
| − | }}
| |
| − | </div>
| |
| − |
| |
| − |
| |
| − |
| |
| − | <div class="slide">
| |
| − | ===Variables dentro de una función===
| |
| − | *Dentro de una función las variables que declaremos son locales a esa función.
| |
| − | *No podré acceder a su valor fuera de la función
| |
| − | *Esto también implica que dentro de una función no puedo acceder al valor de una variable definida fuera de la función
| |
| − | *Observa el siguiente ejemplo
| |
| − | <source lang=php>
| |
| − | <?php
| |
| − |
| |
| − |
| |
| − | function modifica_valor(){
| |
| − | echo "Valor de <b>var1</b> dentro de función -$var1- <br /> ";
| |
| − | $var1++;
| |
| − | echo "Valor de <b>var1</b> dentro de función moficada -$var1- <br /> ";
| |
| − | }
| |
| − |
| |
| − | $var1 = 20;
| |
| − |
| |
| − | echo "Valor de <b>var1</b> en programa principal antes de invocar función: -$var1- <br />";
| |
| − | modifica_valor();
| |
| − | echo "Valor de <b>var1</b> en progrma principal después de invocar la función: -$var1- <br />";
| |
| − | ?>
| |
| − | </source>
| |
| − | *Vemos que genera la siguiente salida
| |
| − | <source lang=bash>
| |
| − | Valor de var1 en programa principal antes de invocar función: -20-
| |
| − | Valor de var1 dentro de función --
| |
| − | Valor de var1 dentro de función moficada -1-
| |
| − | Valor de var1 en progrma principal después de invocar la función: -20-
| |
| − | </source>
| |
| − | *Sin embargo si quieremos acceder al valor de '''''$var ''''' dentro de la función, sí que podemos
| |
| − | *Ĥemos de usar la palabra reservada '''''$global'''''
| |
| − | <source lang=php>
| |
| − | <?php
| |
| − |
| |
| − | function modifica_valor(){
| |
| − | global $var1; //Indicamos que esta variables se puede globalizar
| |
| − | echo "Valor de <b>var1</b> dentro de función -$var1- <br /> ";
| |
| − | $var1++;
| |
| − | echo "Valor de <b>var1</b> dentro de función moficada -$var1- <br /> ";
| |
| − | }
| |
| − |
| |
| − | $var1 = 20;
| |
| − |
| |
| − | echo "Valor de <b>var1</b> en programa principal antes de invocar función: -$var1- <br />";
| |
| − | modifica_valor();
| |
| − | echo "Valor de <b>var1</b> en progrma principal después de invocar la función: -$var1- <br />";
| |
| − | ?>
| |
| − | </source>
| |
| − | *Ahora podemos observar cómo sí que se accede al valor dentro de la función
| |
| − | <source lang=bash>
| |
| − | Valor de var1 en programa principal antes de invocar función: -20-
| |
| − | Valor de var1 dentro de función -20-
| |
| − | Valor de var1 dentro de función moficada -21-
| |
| − | Valor de var1 en progrma principal después de invocar la función: -21-
| |
| − | </source>
| |
| − |
| |
| − | __NOTOC__
| |
| − | [[Archivo:ciclo_dwes.png|center|400px]]
| |
| | | | |
| | <hr /> | | <hr /> |
| Línea 270: |
Línea 18: |
| | #[[Usuario:ManuelRomero/ProgramacionWeb/Conceptos_generales|Tema 1. Conceptos generales del desarrollo web]] | | #[[Usuario:ManuelRomero/ProgramacionWeb/Conceptos_generales|Tema 1. Conceptos generales del desarrollo web]] |
| | #[[Usuario:ManuelRomero/ProgramacionWeb/arquitectura|Tema 2. Arquitecturas y tecnologías web]] | | #[[Usuario:ManuelRomero/ProgramacionWeb/arquitectura|Tema 2. Arquitecturas y tecnologías web]] |
| | + | #[[Usuario:ManuelRomero/ProgramacionWeb/2_arquitectura|Tema 2. Arquitecturas y tecnologías web new]] |
| | + | #[[Usuario:ManuelRomero/ProgramacionWeb/Docker|Tema 1. Dockerizando un sistema de desarrollo web]] |
| | #[[Usuario:ManuelRomero/ProgramacionWeb/instalacion|Tema 3. Instalación del sistema y puesta en marcha]]<br> | | #[[Usuario:ManuelRomero/ProgramacionWeb/instalacion|Tema 3. Instalación del sistema y puesta en marcha]]<br> |
| − | #[[Usuario:ManuelRomero/ProgramacionWeb/ComandosLinux|Anexo 1.- Comando de linux que usamos]]<br>
| |
| | #[[Usuario:ManuelRomero/ProgramacionWeb/Sintaxis/practica|Prácticas de este tema]] | | #[[Usuario:ManuelRomero/ProgramacionWeb/Sintaxis/practica|Prácticas de este tema]] |
| | | | |
| Línea 282: |
Línea 31: |
| | #[[Usuario:ManuelRomero/ProgramacionWeb/Formularios|Tema 5. Usando formularios]]<br /> | | #[[Usuario:ManuelRomero/ProgramacionWeb/Formularios|Tema 5. Usando formularios]]<br /> |
| | #[[Usuario:ManuelRomero/ProgramacionWeb/Arrays|Tema 6. Arrays en PHP]] | | #[[Usuario:ManuelRomero/ProgramacionWeb/Arrays|Tema 6. Arrays en PHP]] |
| − | #[[Usuario:ManuelRomero/ProgramacionWeb/Authentificacion|Tema 8. Autentificación, Sesiones y Cookies]] | + | #[[Usuario:ManuelRomero/ProgramacionWeb/Authentificacion|Tema 7. Autentificación, Sesiones y Cookies]] |
| | + | #[[Usuario:ManuelRomero/ProgramacionWeb/Ficheros|Tema 8. Ficheros: contenidos y gestión de ficheros en el servidor]] |
| | #[[Usuario:ManuelRomero/ProgramacionWeb/Objetos|Tema 9. PHP Orientado a objetos]] | | #[[Usuario:ManuelRomero/ProgramacionWeb/Objetos|Tema 9. PHP Orientado a objetos]] |
| − | #[[Usuario:ManuelRomero/ProgramacionWeb/Ficheros|Tema 6. Ficheros: contenidos y gestión de ficheros en el servidor]] | + | #[[Usuario:ManuelRomero/ProgramacionWeb/Objetos_base|Tema 9. PHP Orientado a objetos básico]] |
| − | | + | #[[Usuario:ManuelRomero/ProgramacionWeb/TDD|Tema 10. TDD Desarrollo Orientado por Pruebas unitarias]] |
| − | }}
| + | #[[Usuario:ManuelRomero/ProgramacionWeb/bd |Tema 11. Bases de datos con php: mysqli y pdo.]] |
| − | {{Indice2|
| + | #[[Usuario:ManuelRomero/ProgramacionWeb/Smarty |Tema 12 Gestor de plantillas ]] |
| − | Titulo= Segunda evaluación
| + | #[[Usuario:ManuelRomero/ProgramacionWeb/Composer |Tema 13 Composer ]] |
| − | |Listado=
| + | #[[Usuario:ManuelRomero/ProgramacionWeb/Jaxon |Tema 14 Ajax desde php (jaxon)]] |
| − | | + | #[[Usuario:ManuelRomero/ProgramacionWeb/FPDF |Tema 15 Gestionar pdf con php (FPDF)]] |
| − | #[[Usuario:ManuelRomero/ProgramacionWeb/Docker|Tema 1. Dockerizando un sistema de desarrollo web]] | + | #[[Usuario:ManuelRomero/ProgramacionWeb/Paypall |Tema 16 |
| − | | + | .5 Botón Paypall gestionado con php]] |
| − | #[[Usuario:ManuelRomero/ProgramacionWeb/bd |Tema 3. Bases de datos con php: mysqli y pdo.]] | + | |
| − | #[[Usuario:ManuelRomero/ProgramacionWeb/Smarty |Tema 12.1 Gestor de plantillas ]] | + | |
| − | #[[Usuario:ManuelRomero/ProgramacionWeb/Composer |Tema 12.2 Composer ]] | + | |
| − | #[[Usuario:ManuelRomero/ProgramacionWeb/Jaxon |Tema 12.3 Ajax desde php (jaxon)]] | + | |
| − | #[[Usuario:ManuelRomero/ProgramacionWeb/FPDF |Tema 12.4 Gestionar pdf con php (FPDF)]] | + | |
| − | #[[Usuario:ManuelRomero/ProgramacionWeb/Paypall |Tema 12.5 Botón Paypall gestionado con php]] | + | |
| | #[[Usuario:ManuelRomero/ProgramacionWeb/Práctica_tienda |Práctica de la tienda]] | | #[[Usuario:ManuelRomero/ProgramacionWeb/Práctica_tienda |Práctica de la tienda]] |
| − |
| |
| | }} | | }} |
| | {{Indice2| | | {{Indice2| |
| Línea 306: |
Línea 49: |
| | |Listado= | | |Listado= |
| | #Tema 13. Servicios web: REST Y SOAP | | #Tema 13. Servicios web: REST Y SOAP |
| − | #Tema 14. Aplicaciones híbridas: usando ajax y servicios de google | + | <!--#Tema 14. Aplicaciones híbridas: usando ajax y servicios de google--> |
| | #Tema 15. Bases de datos no sql : MongoDB (Base de datos documental) | | #Tema 15. Bases de datos no sql : MongoDB (Base de datos documental) |
| | + | }} |
| | | | |
| − | }}
| |
| | {{Indice2| | | {{Indice2| |
| | Titulo= Laravel | | Titulo= Laravel |
| | |Listado= | | |Listado= |
| − | # [[Usuario:ManuelRomero/Laravel/_introduccion |Introducción]] | + | # [[Usuario:ManuelRomero/Laravel/introduccion |Introducción]] |
| − | # [[Usuario:ManuelRomero/Laravel/_componentes | Empezando]] | + | # [[Usuario:ManuelRomero/Laravel/componentes | Empezando]] |
| − | # [[Usuario:ManuelRomero/Laravel/_conceptos | Conceptos dek Kernel]] | + | # [[Usuario:ManuelRomero/Laravel/blade | Blade]] |
| | + | # [[Usuario:ManuelRomero/Laravel/docker_laravel | Dockerizando un sistema]] |
| | + | |
| | + | # [[Usuario:ManuelRomero/Laravel/conceptos | Conceptos del Kernel]] |
| | # [[Usuario:ManuelRomero/Laravel/_baseDatos | Base de Datos]] | | # [[Usuario:ManuelRomero/Laravel/_baseDatos | Base de Datos]] |
| − | # [[Usuario:ManuelRomero/Laravel/_autentificacion | Autentificación]] | + | # [[Usuario:ManuelRomero/Laravel/autentificacion | Autentificación]] |
| | + | # [[Usuario:ManuelRomero/Laravel/tarea_laravel |Tarea]] |
| | + | |
| | + | # [[Usuario:ManuelRomero/Laravel/Roles |Sistema de roles]] |
| | + | # [[Usuario:ManuelRomero/Laravel/Autorización |Autorización]] |
| | + | # [[Usuario:ManuelRomero/Laravel/Ejemplo |Ejemplo de proyecto en laravel]] |
| | + | # [[Usuario:ManuelRomero/Laravel/Ejemplo_vue |Crear un cronómetro (vue-tailwind]] |
| | + | # [[Usuario:ManuelRomero/Laravel/ListaDinamica |Crear un listado (CRUD) con vue]] |
| | + | # [[Usuario:ManuelRomero/Laravel/librerías |Librerías y utilidades en laravel]] |
| | + | # [[Usuario:ManuelRomero/Laravel/ficheros |Ficheros con laravel]] |
| | + | # [[Usuario:ManuelRomero/Laravel/despliegue|Desplegando un proyecto en laravel]] |
| | + | # [[Usuario:ManuelRomero/Laravel/inertia|JetStream Inertia]] |
| | + | |
| | + | # [[Usuario:ManuelRomero/Laravel/helper | Helper]] |
| | # [[Usuario:ManuelRomero/Laravel/_modelos | Modelos]] | | # [[Usuario:ManuelRomero/Laravel/_modelos | Modelos]] |
| | # [[Usuario:ManuelRomero/Laravel/_formularios | Formularios]] | | # [[Usuario:ManuelRomero/Laravel/_formularios | Formularios]] |
| Línea 331: |
Línea 90: |
| | # [[Usuario:ManuelRomero/Laravel/_Traducciones | Traducciones]] | | # [[Usuario:ManuelRomero/Laravel/_Traducciones | Traducciones]] |
| | # [[Usuario:ManuelRomero/Laravel/_DOMPdf |DOMPdf en laravel]] | | # [[Usuario:ManuelRomero/Laravel/_DOMPdf |DOMPdf en laravel]] |
| | + | # [[Usuario:ManuelRomero/Laravel/API |Api de laravel]] |
| | + | # [[Usuario:ManuelRomero/Laravel/Facade|Facade en php]] |
| | + | # [[Usuario:ManuelRomero/Laravel/Nova|Laravel Nova]] |
| | + | # [[Usuario:ManuelRomero/Laravel/Pulse|Laravel Pulse]] |
| | + | # [[Usuario:ManuelRomero/Laravel/filament|Laravel Filament]] |
| | + | # [[Usuario:ManuelRomero/Laravel/blueprint|Blueprint]] |
| | }} | | }} |
| | + | |
| | | | |
| | <!-- | | <!-- |
| Línea 380: |
Línea 146: |
| | }} | | }} |
| | --> | | --> |
| | + | |
| | + | #Mirar |
| | + | *'''''folium''''' para pintar en mapas |
| | + | *Scraping en html https://gist.github.com/phette23/6707807 |
| | + | *Gráficos https://github.com/vivesweb/php-libplot |
| | + | *Stripe in laravel (método de suscripción https://medium.com/@microDesignn/integrate-stripe-in-laravel-10-via-laravel-cashier-4da7b220fddb |