Diferencia entre revisiones de «Usuario:ManuelRomero/ProgramacionWeb/Contenido»

De WikiEducator
Saltar a: navegación, buscar
(17 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/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 283: Línea 31:
 
#[[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 8. Autentificación, Sesiones y Cookies]]
 +
#[[Usuario:ManuelRomero/ProgramacionWeb/Ficheros|Tema 6.  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]]
 
 
}}
 
{{Indice2|
 
Titulo= Segunda evaluación
 
|Listado=
 
 
#[[Usuario:ManuelRomero/ProgramacionWeb/Docker|Tema 1. Dockerizando un sistema de desarrollo web]]
 
 
 
#[[Usuario:ManuelRomero/ProgramacionWeb/bd |Tema 3. Bases de datos con php: mysqli y pdo.]]
 
#[[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/Smarty |Tema 12.1 Gestor de plantillas ]]
Línea 300: Línea 40:
 
#[[Usuario:ManuelRomero/ProgramacionWeb/Paypall |Tema 12.5 Botón Paypall gestionado con php]]
 
#[[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 45:
 
|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/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/Roles |Sistema de roles]]
 +
# [[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/_modelos | Modelos]]
 
# [[Usuario:ManuelRomero/Laravel/_modelos | Modelos]]
 
# [[Usuario:ManuelRomero/Laravel/_formularios | Formularios]]
 
# [[Usuario:ManuelRomero/Laravel/_formularios | Formularios]]
Línea 331: Línea 79:
 
# [[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]]
 
}}
 
}}
  

Revisión de 08:44 1 dic 2022


Ciclo dwes.png

Herramientas de apoyo para el desarrollo web

  1. Vesta: Administración de sitios web
  2. Anexo 1.- Comando de linux que usamos


Bloque introducción

  1. Bloque 1: Objetivos y finalidad
  2. Tema 1. Conceptos generales del desarrollo web
  3. Tema 2. Arquitecturas y tecnologías web
  4. Tema 1. Dockerizando un sistema de desarrollo web
  5. Tema 3. Instalación del sistema y puesta en marcha
  6. Prácticas de este tema

Programación de aplicaciones entorno servidor:PHP

  1. Tema 4. Sintaxis del lenguaje
  2. Tema 4.1 Declarando funciones en php
  3. Tema 5. Usando formularios
  4. Tema 6. Arrays en PHP
  5. Tema 8. Autentificación, Sesiones y Cookies
  6. Tema 6. Ficheros: contenidos y gestión de ficheros en el servidor
  7. Tema 9. PHP Orientado a objetos
  8. Tema 3. Bases de datos con php: mysqli y pdo.
  9. Tema 12.1 Gestor de plantillas
  10. Tema 12.2 Composer
  11. Tema 12.3 Ajax desde php (jaxon)
  12. Tema 12.4 Gestionar pdf con php (FPDF)
  13. Tema 12.5 Botón Paypall gestionado con php
  14. Práctica de la tienda

Segunda evalución PHP otros temas con php

  1. Tema 13. Servicios web: REST Y SOAP
  2. Tema 15. Bases de datos no sql : MongoDB (Base de datos documental)

Laravel

  1. Introducción
  2. Empezando
  3. Conceptos del Kernel
  4. Base de Datos
  5. Autentificación
  6. Sistema de roles
  7. Ejemplo de proyecto en laravel
  8. Crear un cronómetro (vue-tailwind
  9. Crear un listado (CRUD) con vue
  10. Librerías y utilidades en laravel
  11. Ficheros con laravel
  12. Desplegando un proyecto en laravel
  13. JetStream Inertia
  1. Modelos
  2. Formularios
  3. Artisan
  4. Sublime y laravel
  5. Helper en laravel
  6. TDD y phpunit pruebas del código
  7. Middleware
  8. Usando ficheros ini de nuestro proyecto
  9. Sistemas de ficheros en laravel
  10. Crear un CRUD sobre la base de datos de la Tienda
  11. Vue Font-end en Laravel
  12. Traducciones
  13. DOMPdf en laravel
  14. Api de laravel