Diferencia entre revisiones de «Usuario:ManuelRomero/php/NewPHP/B2T1/Sintaxis»
De WikiEducator
< Usuario:ManuelRomero | php
(Página creada con «{{:Usuario:ManuelRomero/dwes/B2T1/nav}}») |
|||
| Línea 1: | Línea 1: | ||
{{:Usuario:ManuelRomero/dwes/B2T1/nav}} | {{:Usuario:ManuelRomero/dwes/B2T1/nav}} | ||
| + | <!--__NOEDITSECTION__--> | ||
| + | {|cellpadding="5" cellspacing="6" style="width:100%;background:#DFFFFF; border-style:solid; border-width:2px; border-color:#0066FF;" | ||
| + | | width="100%" valign="top" style="padding: 0; margin:0px;" | | ||
| + | {|cellpadding="5" cellspacing="6" style="width:100%;background:#DFFFFF; border-style:solid; border-width:1px; border-color:#0066FF;" | ||
| + | | width="100%" valign="top" style="padding: 0; margin:0px;" | | ||
| + | <span style="background:#FFFF99"> | ||
| + | </span> | ||
| + | [[Imagen:DWES_TituloTema3.gif|center]] | ||
| + | |} | ||
| + | __NOTOC___ | ||
| + | {{#widget:Slides}} | ||
| + | <div class="slides layout-regular template-default"> | ||
| + | <div class="slide"> | ||
| + | ===Introducción=== | ||
| + | #PHP (acrónimo de PHP: Hypertext Preprocessor) | ||
| + | ##es un lenguaje de código abierto | ||
| + | ## muy popular (Podríamos pensar en un estándar?) | ||
| + | ## especialmente adecuado para desarrollo web | ||
| + | ## en desarrollos web | ||
| + | ###Se ejecuta en el servidor web | ||
| + | ###Es incrustrado en HTML. | ||
| + | ### El cliente solo ve el resultado de la ejecución nunca el código | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | ===Como escribir PHP 1=== | ||
| + | *Dentro de páginas html | ||
| + | '''<?php''' | ||
| + | '' instrucciones'' | ||
| + | '''?>''' | ||
| + | *Nosotros siempre usaremos este estilo para escribir código | ||
| + | *Lo podemos embeber en código html .... o no. | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | ;Otros modos menos usados | ||
| + | :Estilo asp | ||
| + | '''<%''' | ||
| + | '' instrucciones'' | ||
| + | '''%>''' | ||
| + | *Para ello hemos de tener habilitado la etiqueta de php.ini | ||
| + | asp_tags 1 | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | ;Estilo corto | ||
| + | '''<?''' | ||
| + | '' instrucciones'' | ||
| + | '''?>''' | ||
| + | *Para ello hemos de tener habilitado la etiqueta de php.ini | ||
| + | short_open_tag 1 | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | ;Sintaxis para editores HTML | ||
| + | '''<SCRIPT LANGAGE="PHP">''' | ||
| + | '' instrucciones'' | ||
| + | '''</SCRIPT>''' | ||
| + | *Guardamos el fichero con extensión .php | ||
| + | **Así sabemos que el interprete php tiene que ejecutar código | ||
| + | </div> | ||
| + | <div class="slide"> | ||
| + | ===Dónde poner el código embebido=== | ||
| + | <br/> | ||
| + | {{Pregunta|Dónde escribir código php}} | ||
| + | </div> | ||
| + | <div class="slide"> | ||
| + | *Donde queramos que se ejecute algo | ||
| + | <hr/> | ||
| + | [[Imagen:codigoPHP.png|center|900px]] | ||
| + | *Se ejecuta como si fuera un solo programa | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | ===Como escribir PHP 2=== | ||
| + | *Escribiendolo en un fichero aparte | ||
| + | **incluimos el fichero explícitamente | ||
| + | <source lang=php> | ||
| + | include('ruta/nobrefichero'); | ||
| + | require('ruta/nobrefichero'); | ||
| + | include_once('ruta/nombrefichero'); | ||
| + | require_once('ruta/nombrefichero'); | ||
| + | </source> | ||
| + | |||
| + | </div> | ||
| + | <div class="slide"> | ||
| + | {{Recursos de la Web| | ||
| + | *[http://php.net/manual/es/ php] página oficial en español LO MEJOR!!!! | ||
| + | *http://php.net/manual/es/ | ||
| + | *<!-- MRM incluir en el otro documento http://php.net/manual/es/ini.core.php --> | ||
| + | |||
| + | }} | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | ===Planteando un lenguaje de programación=== | ||
| + | ;Lexicos | ||
| + | *Son las palabras reservadas del lenguaje | ||
| + | http://php.net/manual/es/reserved.keywords.php | ||
| + | ;Sintaxis | ||
| + | Reglas de construcción | ||
| + | Son las ya conocidas, pero veremos como se construyen las expresiones | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | ;Semántica | ||
| + | Habla del significado | ||
| + | Estudiaremos alguna peculiaridad como el hecho de que php es un lenguaje '''''muy orientado a expresiones''''' | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | ===Instrucciones en un lenguaje de programacion=== | ||
| + | #Inicio Fin de bloque | ||
| + | #Declaraciones (variables, constantes, funciones, clases, objetos, ...) | ||
| + | #Asignacion | ||
| + | #Instrucion/funcion de leer del teclado, escribir por pantalla | ||
| + | #Invocación (llamada a función o método) | ||
| + | #Estructura de control (selectiva, iterativa) | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | ;Separando instrucciones | ||
| + | *Para separar una instrucción de otra usaremos ''''';''''' (punto y coma) | ||
| + | *Su uso es obligatorio a execepción de la última instrucción que se puede obviar | ||
| + | *Esto es por que el fin de código php '''''?>''''' implica esta instrucción | ||
| + | *Nosotros lo usaremos siempre | ||
| + | ;Instruccion de inicio fin de bloque | ||
| + | <source lang = php> | ||
| + | { //Instrucción de inicio de bloque | ||
| + | } //Instrucción de fin de bloque | ||
| + | </source> | ||
| + | |||
| + | </div> | ||
| + | <div class="slide"> | ||
| + | ===Declaraciones=== | ||
| + | #De variables | ||
| + | #De constantes | ||
| + | (Luego veremos funciones y en otro tema clases y objetos) | ||
| + | {{Pregunta| | ||
| + | * Qué es un '''''tipo de dato''''' | ||
| + | * Qué es una '''''variable''''' | ||
| + | }} | ||
| + | </div> | ||
| + | <div class="slide"> | ||
| + | <!--2----------------------------------> | ||
| + | {{Definicion| | ||
| + | '''''Un tipo de dato''''' es un conjunto de valores para los cuales hay definidos una serie de operaciones}} | ||
| + | </div> | ||
| + | <div class="slide"> | ||
| + | <!--3----------------------------------> | ||
| + | {{Definicion| | ||
| + | '''''Una variable''''' es una posición de memoria que va almacener algún valor de un determinado tipo, y cuyo contenido puede variar durante la ejecución de un programa | ||
| + | }} | ||
| + | </div> | ||
| + | <div class="slide"> | ||
| + | <!--4----------------------------------> | ||
| + | ;PHP: '''''Tipado dinámico'''' | ||
| + | *Una características semántica muy, muy importante de php | ||
| + | {{Puntos clave|PHP es un lenguaje fuertemente tipado}} | ||
| + | *Los lenguajes de programación pueden ser mas o menos exigentes en cuanto a la declaración de los tipos de las variables para poder ser usados durante la ejecución de un programa. | ||
| + | </div> | ||
| + | <div class="slide"> | ||
| + | ;tipado dinámico | ||
| + | *Lenguajes fuertemente tipos o débilmente tipados | ||
| + | *Esto tiene que ver con el hecho de que cada variable en un momento dado tiene un tipo, y lo podemos saber | ||
| + | *Esto ocurre en php | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | ;Tipado dinámico | ||
| + | *Php no es estricto en el tipo de dato de una variable en cuanto que éste puede cambiar durante su vida. | ||
| + | *En este sentido php es un lenguaje de '''''tipado dinámico''''', el tipo de la variable depende del valor que tiene en un momento dado o de los operadores que lo afecten. | ||
| + | {{Puntos clave|PHP es un lenguaje de tipado dinámico}} | ||
| + | </div> | ||
| + | |||
| + | |||
| + | <div class="slide"> | ||
| + | ;Definir variables | ||
| + | *En php una variable es definida la primera vez que se usa. | ||
| + | *El tipo de la variable depende del valor que tenga asignado en un momento dado | ||
| + | *El identificador de php tiene que empezar por el signo '''''$''''' | ||
| + | *En php las variablas se prepresentas con el signo '''''$''''' seguido de un caracter de subrayado o una letra y luego letras, números y caracteres de subrayado en cualquier orden y número. | ||
| + | </div> | ||
| + | <div class="slide"> | ||
| + | ;PHP y variables | ||
| + | {{Resumen| | ||
| + | #Php fuertemente tipado | ||
| + | #Php tipado dinámico | ||
| + | #Php no es estricto en la declaracion de variables (no hay que declararlas antes de usarlas) | ||
| + | }} | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | <!--4----------------------------------> | ||
| + | ;identificador de variables | ||
| + | {{Puntos clave|identificador = $[_|a.zA..Z][_|a..zA..Z0..9]* | ||
| + | <source lang=php> | ||
| + | <?php | ||
| + | $miVariable= 8;/*Variable de tipo entero*/ | ||
| + | edad = 5/*Error en el identificador*/ | ||
| + | $5edad = 5 /*Error en el identificador */ | ||
| + | ?> | ||
| + | </source> | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | <!--4----------------------------------> | ||
| + | ;Sensitive case? | ||
| + | *El lenguaje es sensible a mayúsculas y minúsculas | ||
| + | **En los identificadores de variables ($edad != $Edad) | ||
| + | **No lo es en nombres de funciones $calculaEdad(1990) != $CalculaEdad(1990) | ||
| + | **No lo es en palabras reservadas (if o If o IF o iF,...) | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | <!--4----------------------------------> | ||
| + | ===Valores y tipos de datos=== | ||
| + | http://php.net/manual/es/language.types.intro.php | ||
| + | *En Php tenemos 8 tipos de datos | ||
| + | *En php tenemos | ||
| + | #5 tipos básicos o primitibos (booleano, entero, real, string, NULL) | ||
| + | #3 compuestos (array, objeto, recurso) | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | <!--4----------------------------------> | ||
| + | ;tipos básicos | ||
| + | #'''entero '''''integer''''' ''' | ||
| + | *Posible notación decimal/octal/hexadecimal | ||
| + | decimal [0..9]+ | ||
| + | hexadecimal 0x[0..f]+ | ||
| + | octal 0[0..7]+ | ||
| + | binario 0b[01]+ | ||
| + | *Todos ellos pueden ser positivos o negativos | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | <!--4----------------------------------> | ||
| + | <source lang=php> | ||
| + | **$Numero=10; | ||
| + | *Octal | ||
| + | **$NumeroOctal=067; | ||
| + | *Hexadecimal | ||
| + | **$NumeroHex=0cA56B; | ||
| + | </source> | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | <!--4----------------------------------> | ||
| + | ;integer | ||
| + | *Al imprimirlos con print los veré con valor decimal | ||
| + | *Para verlos en otras base hay que usar printf o format o utilizar las conversiones dechex o dechex o octdec, .... que veremos a continuación | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | <!--4----------------------------------> | ||
| + | |||
| + | ;cadena '''''string''''' | ||
| + | $frase="Esto es un literal de cadena de caracteres" | ||
| + | **real o coma flotante '''''float''''' | ||
| + | <source lang=php> | ||
| + | $valor=$0.2345; | ||
| + | $valor=.54; | ||
| + | $valor=7E-12; | ||
| + | </source> | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | <!--4----------------------------------> | ||
| + | ;Booleano '''''boolean''''' | ||
| + | <source lang=PHP> | ||
| + | $estado=TRUE; | ||
| + | $estado=TrUe; | ||
| + | $estado=falsE; | ||
| + | </source> | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | <!--4----------------------------------> | ||
| + | ;NULL | ||
| + | *un tipo especial que solo tiene ese valor | ||
| + | *Una variable tiene el valor null | ||
| + | #Si aún no se le ha asignado valor, o éste se ha destruido (unset() | ||
| + | #Si se le ha asignado explícitametne el valor NULL. | ||
| + | <source lang=PHP> | ||
| + | $a=NULL; | ||
| + | $a=null; | ||
| + | </source> | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | <!--4---------------------------------> | ||
| + | ;Tipos complejos | ||
| + | *Objetos básico en su aspecto de OOP | ||
| + | *Matrices o arrays muy muy utilizados | ||
| + | *Recursos este más que un tipo complejo es un tipo especial que hace referencia a un recurso externo referencia , como una conexión a una base de datos o como una referencia a un fichero pdf. | ||
| + | *Este tipo de variables las veremos más adelante | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | <!--4----------------------------------> | ||
| + | ===Comentarios === | ||
| + | Son ignorados por el intérprete | ||
| + | <source lang=php> | ||
| + | <?php | ||
| + | /* | ||
| + | Este código no hace nada pero muestra | ||
| + | la sintaxis de los comentarios | ||
| + | como este que ocupa varias líneas tipo lenguaje C o Java | ||
| + | */ | ||
| + | $miVariable= 8;// Esta parte de la línea se ignorará | ||
| + | $miVariable+= 8;# y esta parte de línea tambien | ||
| + | echo "Valor de la variable $miVariable"; | ||
| + | //Este es otro comentario de una sola línea | ||
| + | #Este es otro modo de hacer comentarios tipo script de linux | ||
| + | ?> | ||
| + | </source> | ||
| + | *Este código nos visualizará | ||
| + | Valor de la variable 16 | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | |||
| + | </source> | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | <!--4----------------------------------> | ||
| + | ===Separación de instrucciones=== | ||
| + | *En php cada instrucción se separa de otra con ''''';''''' (punto y coma). | ||
| + | *El cierre de etiqueta php implica un ''''';''''' (punto y coma), por lo que podríamos no ponerlo | ||
| + | <source lang =php> | ||
| + | <?php | ||
| + | $a=5; | ||
| + | $echo'la instruccion de arriba es una y esta otra"; | ||
| + | $echo'esta instrucción puede no llevar ; | ||
| + | por ir antes de fin de etiqueta php, pero mejor ponerla" | ||
| + | ?> | ||
| + | </source> | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | <!--4----------------------------------> | ||
| + | {{Actividad| | ||
| + | *Probamos a hacer programas sencillos donde asignamos y visualizamos valores | ||
| + | #entero: | ||
| + | #cadena: | ||
| + | #booleano: | ||
| + | #real | ||
| + | #NULL | ||
| + | }} | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | ===Valor de variable=== | ||
| + | *A una variable le puedo asignar un valor en cualquier momento | ||
| + | *El tipo de la variable depende del valor que tiene | ||
| + | *Hay una serie de funciones del sistema relacionadas con los valores y las variables | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | <!--4----------------------------------> | ||
| + | ====Funciones de php de tipos y valores==== | ||
| + | http://php.net/manual/es/ref.var.php | ||
| + | *Existen una serie de funciones que son interesantes de conocer | ||
| + | *Están relacionadas con los tipos de datos y valores | ||
| + | *Alguna de ellas son extremadamente útiles y utilizadas, por ejemplo antes de procesar un dato, hay que ver que dicho dato tenga valor. | ||
| + | *A continuación trataremos alguna de ellas | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | |||
| + | ;[http://es1.php.net/manual/es/function.var-dump.php var_dump] | ||
| + | <source lang=php> | ||
| + | void var_dump($expresion) | ||
| + | </source> | ||
| + | *Nos da información sobre la estructura de un valor resultado de una expresion | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | <!--4----------------------------------> | ||
| + | |||
| + | ;[http://es1.php.net/manual/es/function.isset.php isset] | ||
| + | <source lang=php> | ||
| + | bool isset ( $variable ) | ||
| + | </source> | ||
| + | *verifica que una variable tiene valor (está definida y no tiene un valor null) | ||
| + | <source lang=php> | ||
| + | <?php | ||
| + | $VariableValor= 5; | ||
| + | print ("El valor de la variable es $VariableValor"); | ||
| + | print ("El valor de otra variable es $OtraVariableValor"); | ||
| + | if (isset($VariableValor)) | ||
| + | print ("VariableValor tiene valor asignado"); | ||
| + | else | ||
| + | print ("VariableValor no no tiene valor asignado"); | ||
| + | if (isset($OtraVariableValor)) | ||
| + | print ("OtraVariableValor tiene valor asignado"); | ||
| + | else | ||
| + | print ("OtraVariableValor no no tiene valor asignado"); | ||
| + | ?> | ||
| + | </source> | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | <!--4----------------------------------> | ||
| + | |||
| + | ;[http://es1.php.net/manual/es/function.empty.php empty] | ||
| + | <source lang=php> | ||
| + | bool empty ($varriable) | ||
| + | </source> | ||
| + | *Determina si una variable no existe. Devuelve true si no existe o su valor está vacío | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | <!--4----------------------------------> | ||
| + | |||
| + | {{Actividad| | ||
| + | Probamos las fuciones var_dump() que nos da información sobre el valor y el tipo}} | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | {{Actividad| | ||
| + | Usando la función xxxyyy donde xxx e yyy será dec oct bin o hex para convertir el valor de un sistema numérico a otro}} | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | <!--4----------------------------------> | ||
| + | |||
| + | {{Actividad| | ||
| + | *Define las siguientes variables que se especifican en el código siguiente y verifica el resultado con empty() | ||
| + | |||
| + | <source lang=php> | ||
| + | $num=0; | ||
| + | $nombre=""; | ||
| + | $nombre=null; | ||
| + | $nombre="0"; | ||
| + | $pregunta = FALSE; | ||
| + | </source> | ||
| + | }} | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | <!--4----------------------------------> | ||
| + | |||
| + | ;[http://es1.php.net/manual/es/function.gettype.php gettype]] | ||
| + | *Devuelve el tipo de una variable | ||
| + | <source lang=php> | ||
| + | string gettype($variable) | ||
| + | </source> | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | <!--4----------------------------------> | ||
| + | |||
| + | ;[http://es1.php.net/manual/es/function.is-bool.phpis_bool][http://es1.php.net/manual/es/function.is-double.php is-double] [http://es1.php.net/manual/es/function.is-int.php is-int], is-xxx | ||
| + | *son funciones donde xxx especificado en el último nombre, puede ser cualquiera de los tipos | ||
| + | [[Archivo:funciones_is-xxx.png]] | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | |||
| + | *Todas ellas devuelve un booleano que indica si la variable, valor o expresion es o no de ese tipo, | ||
| + | <source lang=php> | ||
| + | string is_int($variable); | ||
| + | string is_double($variable); | ||
| + | string is_bool($variable); | ||
| + | string is_integer($variable); | ||
| + | string is_null($variable); | ||
| + | string is_string($variable); | ||
| + | ... | ||
| + | </source> | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | {{Actividad| | ||
| + | Visualizar de qué tipo es la expresión mostrada en el código siguiente y visualiza el valor de la expresión}} | ||
| + | <source lang=php> | ||
| + | $a=5; | ||
| + | </source> | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | <!--4----------------------------------> | ||
| + | |||
| + | ;[http://php.net/manual/es/function.unset.php unset] | ||
| + | *Destruye la variable especificada perdiéndose su valor | ||
| + | void unset ($var) | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | === Cadenas=== | ||
| + | *En php las cadenas de caracteres, son expresiones literales | ||
| + | *Tenemos 4 maneras diferentes de poder expresar una cadena de caracteres como un literal | ||
| + | *Comillas dobles "" | ||
| + | *Comillas sencillas <nowiki>''</nowiki> | ||
| + | *Sintasix '''''heredoc''''' | ||
| + | *Sintaxis '''''nowdoc''''' | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | ;Comillas dobles | ||
| + | *En ellas se interpretan los caracteres especiales | ||
| + | #''''' $''''' seguido de un nombre, interpreta que es una variable y toma su valor (null si no tiene valor o no está definida | ||
| + | #'''''\''''' es un caracter de secuencia de escape, e interpreta que el carácter siguiente tiene un significado especial \\ \a \n \r \t , ... | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | *Si queremos que se ignore un carácter especial, éste ha de ir precedido por el caracter '''''\''''' | ||
| + | <source lang=php> | ||
| + | $nombre = 'pedro'; | ||
| + | echo "El valor de la variable \$nombre es $nombre"; | ||
| + | </source> | ||
| + | *El resultado sería | ||
| + | El valor de la variable $nombre es pedro | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | ;Comillas simples | ||
| + | *En ellas solo se interpreta el carácter, seguido de \ o bien seguido de la barra invertida '''''\\''''' comilla simple '''''\<nowiki>'</nowiki>''''' | ||
| + | *El resto de caracteres no se interpretan | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | <source lang=php> | ||
| + | $nombre = 'pedro'; | ||
| + | echo 'El valor de la variable $nombre es $nombre y \\ \'texto\' si que se ve entre comillas simples'; | ||
| + | </source> | ||
| + | *La salida sería | ||
| + | El valor de la variable $nombre es $nombre y \ 'texto' si que se ve entre comillas simples'; | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | ;Heredoc | ||
| + | *Este tipo de expresión de string es útil para especificar cadenas largas en multilíneas | ||
| + | *Se comporta como un string entre comillas dobles para el tema de interpretar y escapar ciertos caracterres | ||
| + | *Se establece con el operador '''''<<<''''' | ||
| + | *A continuación viene un identificador | ||
| + | *Después empieza a especificarse la cadena de caracteres | ||
| + | *Para finalizarla se escribe en una nueva línea el identificador | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | <source lang=php> | ||
| + | <?php | ||
| + | $frase = <<<FINAL | ||
| + | Esta es una cadena | ||
| + | de caracteres que se asignará | ||
| + | a la variable frase | ||
| + | y termina con la palabra | ||
| + | con la que hemos empezado | ||
| + | FINAL; | ||
| + | <? | ||
| + | </source> | ||
| + | *La palabra final no debe tener ningún espacio ni tabulador antes | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | ;NewDoc | ||
| + | *Es igual que heredoc , pero sin interpretar los caracteres especiales salvo '''''\\''''' '''''\.''''' | ||
| + | *O sea que es como un entrecomillado sencillo | ||
| + | *La sintasix es igual que la de heredoc, pero a diferencia el delimitador que se especifica al principio debe de ir entrecomillado con comillas simples | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | <source lang=php> | ||
| + | <?php | ||
| + | $nombre=pedro; | ||
| + | $frase = <<<'FINAL' | ||
| + | El valor de $nombre | ||
| + | es $nombre, pero aquí | ||
| + | no lo veo por que es newdoc | ||
| + | FINAL; | ||
| + | </source> | ||
| + | </div> | ||
| + | |||
| + | |||
| + | <!--4----------------------------------> | ||
| + | |||
| + | <div class="slide"> | ||
| + | |||
| + | === Funciones de salida=== | ||
| + | *Construcciones básicas para salida de caracteres | ||
| + | *No son funciones (con o sin paréntesis) son '''''echo'''' '''''print''''' | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | <!--4----------------------------------> | ||
| + | |||
| + | ====echo==== | ||
| + | *Es el uso más sencillo | ||
| + | *Imprime una cadena como argumentos | ||
| + | *En la versión sin paréntesis también puedes pasar una lista de argumentos. | ||
| + | '''<?php''' | ||
| + | *Echo “primer argumento”, “segundo argumento”, “tercer argumeto” | ||
| + | '''?>''' | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | <!--4----------------------------------> | ||
| + | |||
| + | ====print==== | ||
| + | Tiene dos diferencias con echo | ||
| + | #Sólo puede aceptar un argumento | ||
| + | #Devuelve un valor que representa si la sentencia ha tenido o no éxito | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | *Para las siguientes actividades debes conocer las estructuras de control básicas. | ||
| + | {{Actividad| | ||
| + | Haz un programa que sume los 100 primeros números}} | ||
| + | |||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | |||
| + | {{Actividad| | ||
| + | Haz un programa que obtenga de forma aleatoria dia (1-31)mes(1-12) y año(1-3000) y nos diga si la fecha es correcta o no y porqué}} | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | |||
| + | {{Actividad| | ||
| + | *Haz un programa que a partir de precio hora y de número de horas calcule una nómina, teniendo en cuenta que: | ||
| + | #mas de 40 horas son extras (1.5 el precio base) | ||
| + | #IRPF < 600E exento | ||
| + | #Entre 600 y 800 5% | ||
| + | #Mas de 800 12 % | ||
| + | *Nos debe de dar detalle del bruto, descuentos y neto de salario}} | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | |||
| + | {{Actividad| | ||
| + | Un programa que nos diga si un número es o no primo}} | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | |||
| + | {{Actividad| | ||
| + | Haz un programa que muestre la tabla de multiplicar de un número aleatorio en una tabla. Intenta que las sentencias html queden fuera del código de php}} | ||
| + | |||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | ===Constantes=== | ||
| + | *Se definen con la funcion '''''define()''''' | ||
| + | <source lang=php> | ||
| + | define("IVA",0.21); | ||
| + | $total=$base*(1+IVA); | ||
| + | </source> | ||
| + | ;identificador | ||
| + | *Se usa el mismo criterio de construcción pero no empieza por $ | ||
| + | *Se pueden definir y utilizar en cualquier momento que se necesiten. | ||
| + | *Para saber si una constante está definida '''''defined()''''' | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | ===Constantes predefinidas=== | ||
| + | *Como en otros lenguajes, existen una serie de constantes predefinidas | ||
| + | *Nos las ofrece el entorno y dependerán de él para su valor | ||
| + | *PHP Ofrece un gran número de constantes predefinidas http://php.net/manual/es/reserved.constants.php | ||
| + | *En php hay 8 constantes que su valor puede cambiar dependiendo del entorno donde se ejecutan | ||
| + | [http://php.net/manual/es/language.constants.predefined.php constantes] predefinidas en php | ||
| + | </div> | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | |||
| + | {{Tarea| | ||
| + | Realiza un programa que visualice las constantes predefinidas '''variables''' vistas anteriormente, y al menos otras 8 de las constantes predefinidas '''estandar'''}} | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | ===Ambito de una variable=== | ||
| + | *http://php.net/manual/es/language.variables.scope.php | ||
| + | *Ya sabemos que en PHP puedes utilizar variables en cualquier lugar de un programa. | ||
| + | *Si esa variable aún no existe, la primera vez que se utiliza se reserva espacio para ella. | ||
| + | *En ese momento, dependiendo del lugar del código en que aparezca, se decide desde qué partes del programa se podrá utilizar esa variable. | ||
| + | *A esto se le llama visibilidad de la variable. | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | ;Ambito de una variable | ||
| + | *En función de esto tenemos variables locales a la función y variables locales al script | ||
| + | <source lang=php> | ||
| + | $a = 1; | ||
| + | function prueba() | ||
| + | { | ||
| + | // Dentro de la función no se tiene acceso a la variable $a anterior | ||
| + | $b = $a; | ||
| + | // Por tanto, la variable $a usada en la asignación anterior es una variable nueva | ||
| + | // que no tiene valor asignado (su valor es null) | ||
| + | } | ||
| + | </source> | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | ;Ambito de una variable | ||
| + | *Para poder hacer dentro de una función a una variable definida fuera, he de usar la palabra reservada '''''global''''' | ||
| + | <source lang=php> | ||
| + | $a = 1; | ||
| + | function prueba() | ||
| + | { | ||
| + | global $a; | ||
| + | $b = $a; | ||
| + | // En este caso se le asigna a $b el valor 1 | ||
| + | } | ||
| + | </source> | ||
| + | {{Actividad| | ||
| + | *Una funcion que coja un precio y lo actualice según el iva que reciba de argumento. | ||
| + | *El precio total se muestra fuera de la funcion | ||
| + | }} | ||
| + | </div> | ||
| + | ====Variables '''''static'''''==== | ||
| + | *Si una variable la declaramos static, hacemos que su posición de memoria no se elimine aunque no sea accesible por el script | ||
| + | *Cuando volvamos a una sección del script donde vuelve a ser accesible, entonces retomaremos esa posicion de memoria, con el valor que tuviera | ||
| + | <source lang=php> | ||
| + | function contador() | ||
| + | { | ||
| + | static $a=0; | ||
| + | $a++; | ||
| + | // Cada vez que se ejecuta la función, se incrementa el valor de $a | ||
| + | } | ||
| + | </source> | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | ;static | ||
| + | *Las variables estáticas deben inicializarse en la misma sentencia en que se declaran como estáticas. De esta forma, se inicializan sólo la primera vez que se llama a la función. | ||
| + | {{Tarea| | ||
| + | *Haz un programa que llame 20 veces a una función | ||
| + | *Cada vez que llame a la función, la función muestra un mensaje que me diga '''''me has llamado 1 vez''''', o '''''me has llamado 20 veces''''' | ||
| + | }} | ||
| + | </div> | ||
| + | <div class="slide"> | ||
| + | <!--4----------------------------------> | ||
| + | |||
| + | === Estructuras de control 1=== | ||
| + | A continuación veremos las estructuras de control | ||
| + | Son de tres tipos | ||
| + | #Selección | ||
| + | #Iteración | ||
| + | #Secuenciales | ||
| + | *Para construirlas necesitamos operadores | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | ===Selección if=== | ||
| + | *Sentencia que evlúa una expresión booleana y ejectua o no en función de que dicha expresión sea true o false | ||
| + | <source lang=php> | ||
| + | if (condicion) | ||
| + | Sentencia 1; | ||
| + | </source> | ||
| + | <hr> | ||
| + | <source lang=php> | ||
| + | if (condicion){ | ||
| + | Sentencia_1; | ||
| + | Sentencia_2; | ||
| + | } | ||
| + | </source> | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | ;Sentencias de control | ||
| + | if (expresion) | ||
| + | Sentencia_1; | ||
| + | else | ||
| + | Sentencia_2; | ||
| + | </source> | ||
| + | *También existe la opción elseif donde aportaremos una condición que se ha de cumplir para que se ejectuten las sentencias que a continuación acompañan. | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | ;Estructura de control | ||
| + | <source lang=php> | ||
| + | if (expresion){ | ||
| + | sentencias; | ||
| + | } | ||
| + | elseif (expresion){ | ||
| + | sentencias; | ||
| + | } | ||
| + | else{ | ||
| + | sentencias; | ||
| + | } | ||
| + | </source> | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | |||
| + | *Alternativamente puede usarse esta sintaxis que es usada cuando se quiere intercalar condigo html fuera del php. | ||
| + | *También se puede usar la sintaxis vista anteriormente, pero parece que esta quede más compacta. | ||
| + | |||
| + | <source lang=php> | ||
| + | if (condicion): | ||
| + | Sentencia 1; | ||
| + | endif; | ||
| + | </source> | ||
| + | </div> | ||
| + | <div class="slide"> | ||
| + | |||
| + | *Ahora lo vemos con código html | ||
| + | <source lang=php> | ||
| + | <?php if (true): ?> | ||
| + | |||
| + | <h1>Esta frase seguro que aparece ahor</h1> | ||
| + | <!--escribirmos código html --> | ||
| + | <?php else: ?> | ||
| + | <h1>Aquí escribiré poco ya que no va a aparecer nada</h1> | ||
| + | <!--escribirmos código html --> | ||
| + | <?php endif ?> | ||
| + | </source> | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | ===Operadores ternario=== | ||
| + | *Es una forma más compacta de un if else con una única instrucción. | ||
| + | Expresión? SentenciaOKExpresion : SentenciaNoOkExpresion | ||
| + | {{Actividad|Programa que me de si un número aleatorio es par o impar}} | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | ===Seleccion switch=== | ||
| + | *Este es un selector múltiple | ||
| + | *La sentencia case puede albergar cualquier valor de un tipo simple, no está limitado a enteros como en otros lenguajes | ||
| + | *Estructura indicada cuanto tengamos más de dos casos ante una variable o sitiación que evaluemos excluyentes entre sí | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | ;Switch | ||
| + | <source lang=php> | ||
| + | <?php | ||
| + | switch ($nombre){ | ||
| + | case "Maria": | ||
| + | echo "eres una chica"; | ||
| + | break; | ||
| + | case "Pedro"; | ||
| + | echo "eres una chico"; | ||
| + | break; | ||
| + | default: | ||
| + | echo "no se qué nombre tienes"; | ||
| + | } | ||
| + | ?> | ||
| + | </source> | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | ===Iteración while=== | ||
| + | *Como en todos los bucles debemos siempre tener encuenta | ||
| + | #inicializar la variable de control | ||
| + | #acutalizarla correctamente dentro del bucle | ||
| + | #realizar de forma correcta la evaluación de condiciòn (< o <=), (> o >=), ... | ||
| + | <source lang=php> | ||
| + | <?php | ||
| + | $i = 1; | ||
| + | while ($i <= 10) { | ||
| + | echo "iteración número ."$i++; | ||
| + | } | ||
| + | ?> | ||
| + | </source> | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | *Alternativamente podemos usar la siguiente sintaxis | ||
| + | <source lang=php> | ||
| + | $i = 1; | ||
| + | while ($i <= 10): | ||
| + | $i++; | ||
| + | echo "iteración número ."$i; | ||
| + | endwhile; | ||
| + | ?> | ||
| + | </source> | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | |||
| + | ===Iteración do-while=== | ||
| + | *Este tipo de bucle donde seguro que al menos se ejectua un iteración | ||
| + | *Respecto al anterior nos ahorra una comparación. | ||
| + | <source lang=php> | ||
| + | <?php | ||
| + | $num=10; | ||
| + | $resultado=1; | ||
| + | *Esta es la única sintaxis posible con este tipo de sentencia | ||
| + | do { | ||
| + | $resultado:=$resultado*$num; | ||
| + | $num--; | ||
| + | } while ($num>0); | ||
| + | ?> | ||
| + | </source> | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | ===Iteración for=== | ||
| + | *Es un bucle de tipo contador | ||
| + | <source lang=php> | ||
| + | for (expresion_inicial; condicion;expresion_actualizar){ | ||
| + | sentencias; | ||
| + | } | ||
| + | </source> | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | ;Estructura for | ||
| + | *tiene tres partes | ||
| + | ;expresion_inicial: | ||
| + | :Se ejecuta una sóla vez al comienzo del bucle. se usa para inicializar variables | ||
| + | ;condicion | ||
| + | :Es una expresión booleana que se evalúa en cada interación | ||
| + | :Si da un valor false, ya no se ejectua ninguna vez | ||
| + | :Si no hay expresión se toma como true | ||
| + | :En este caso para que el bucle no sea infinito deberá llevar algún break (instrucción de terminación de bloque) en algún momento | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | ;Estrucutura for: condición | ||
| + | <source lang=php> | ||
| + | <?php | ||
| + | for ($a=0; ;$a++){ | ||
| + | echo "$a*$a=".$a*$a."<br>"; | ||
| + | if ($a==10) | ||
| + | break; | ||
| + | } | ||
| + | ?> | ||
| + | </source> | ||
| + | </div> | ||
| + | <div class="slide"> | ||
| + | ;Estructura for: expresion_actualizar | ||
| + | :Esta expresión actualiza el valor de alguna/as variables | ||
| + | :Se ejecuta en cada interacion | ||
| + | *El ejemplo anterior | ||
| + | <source lang=php> | ||
| + | <?php | ||
| + | for ($a=0;$a<10 ;$a++){ | ||
| + | echo "$a*$a=".$a*$a."<br>"; | ||
| + | } | ||
| + | ?> | ||
| + | </source> | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | ===Operadores=== | ||
| + | *Son símbolos que realizan acciones sobre operandos y dan como resultado un valor | ||
| + | *Tenmos diferentes tipos de operadores en función del tipo de operandos y del resultado | ||
| + | ;operadores aritméticos (+,-,*,/,%,**, ++, --) | ||
| + | *Retorna un valor numérico | ||
| + | *el ++, -- son valores de autoincremeto y autodecremento, pueder ser pre o post | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | ;Operadores | ||
| + | <source lang=php> | ||
| + | $a=5; | ||
| + | if ($a++==5) | ||
| + | echo '$a que vale '.$a.' dice que vale 5 ???? <br>' | ||
| + | . 'Esto es por que primero compara y luego incrementa<br>'; | ||
| + | |||
| + | echo 'ahora $a vale '.$a.'<br>'; | ||
| + | |||
| + | if (++$a==6) | ||
| + | echo 'esto nunca saldrá ya que $a se incrementa antes de comparar'; | ||
| + | else | ||
| + | echo 'efectivamente ahora $a ya no vale 6 sino '.$a.'<br>'; | ||
| + | ?> | ||
| + | </source> | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | ;Operadores | ||
| + | *El código anterior genera la siguiente salida | ||
| + | <source lang=php> | ||
| + | $a que vale 6 dice que vale 5 ???? | ||
| + | Esto es por que primero compara y luego incrementa | ||
| + | ahora $a vale 6 | ||
| + | efectivamente ahora $a ya no vale 6 sino 7 | ||
| + | </source> | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | ;operadores comparación (==,<,>,>=,<=,<>,!=,===,!==) | ||
| + | :Este tipo de operadores genera un booleano como resultado de evaluar la expresión | ||
| + | {{Puntos clave| | ||
| + | *'''''==''''' operador de comparacion '''''igual que''''' (mismo valor) | ||
| + | *'''''===''''' operador de comparacion '''''exactamente igual que''''' (mismo valor y tipo) | ||
| + | }} | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | ;Operador == Vs === | ||
| + | <source lang=php> | ||
| + | $num=1; | ||
| + | if ($num==true) | ||
| + | echo '$num es igual a true<br>'; | ||
| + | if ($num===true){ | ||
| + | echo "esto nunca se ejecutará"; | ||
| + | }else | ||
| + | echo '$num no es exactamente igual a true'; | ||
| + | </source> | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | ;Operador == vs === | ||
| + | |||
| + | *El código anterior generaría la siguiente salida | ||
| + | <source lang=php> | ||
| + | $num es igual a true | ||
| + | $num no es exactamente igual a true | ||
| + | </source> | ||
| + | *Ver la sección '''''comparación de tipos''''' de la página oficial | ||
| + | http://php.net/manual/es/language.operators.comparison.php | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | ;operadores de concatenacón( .) concatena cadena de caracteres. | ||
| + | :El operador + no está sobre cargado, observa el siguiente código | ||
| + | <source lang=php> | ||
| + | $nombre="Maria"; | ||
| + | $apellido = " de la Oh"; | ||
| + | |||
| + | $nombreCompleto = $nombre.$apellido; | ||
| + | echo "el valor de nombre completo es $nombreCompleto ---<br>"; | ||
| + | |||
| + | $nombreCompleto = $nombre+$apellido; | ||
| + | echo "el valor de nombre completo es $nombreCompleto --<br>"; | ||
| + | </source> | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | ;La salida del código anterior sería | ||
| + | <source lang=php> | ||
| + | el valor de nombre completo es Maria de la Oh --- | ||
| + | el valor de nombre completo es 0 -- | ||
| + | </source> | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | ;Operadores de asignacion (= , =>) | ||
| + | :Se pueden combinar con los aritméticos (+=, *=, ...) y con los de concatenación (.=) | ||
| + | :En este caso el valor de la variable de la izquierda se toma como primero operando | ||
| + | ;Operador de asiganción | ||
| + | <source lang=php> | ||
| + | <?php | ||
| + | $b=1; | ||
| + | for ($a=0;$a<10;$a++){ | ||
| + | $b*=10; | ||
| + | echo 'valor de $b ='.$b.'<br>'; | ||
| + | } | ||
| + | ?> | ||
| + | </source> | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | *El código anterior genera la siguiente salida | ||
| + | <source lang=php> | ||
| + | valor de $b =10 | ||
| + | valor de $b =100 | ||
| + | valor de $b =1000 | ||
| + | valor de $b =10000 | ||
| + | valor de $b =100000 | ||
| + | valor de $b =1000000 | ||
| + | valor de $b =10000000 | ||
| + | valor de $b =100000000 | ||
| + | valor de $b =1000000000 | ||
| + | valor de $b =10000000000 | ||
| + | </source> | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | ;operadores de ejecución (``) | ||
| + | :PHP proporciona un operador especial que permite ejecutar sentencias | ||
| + | *Observa el siguiente código | ||
| + | |||
| + | <source lang=php> | ||
| + | <?php | ||
| + | $Discos = `df`; | ||
| + | echo "<pre>$Discos</pre>"; | ||
| + | ?> | ||
| + | </source> | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | |||
| + | *El código anterior generará la siguiente salida | ||
| + | <source lang=php> | ||
| + | Filesystem 1K-blocks Used Available Use% Mounted on | ||
| + | /dev/sda5 86378608 6072360 75895384 8% / | ||
| + | none 4 0 4 0% /sys/fs/cgroup | ||
| + | udev 4023720 4 4023716 1% /dev | ||
| + | tmpfs 806904 1384 805520 1% /run | ||
| + | none 5120 0 5120 0% /run/lock | ||
| + | none 4034504 6588 4027916 1% /run/shm | ||
| + | none 102400 28 102372 1% /run/user | ||
| + | /dev/sda7 101797224 40480360 56122728 42% /home | ||
| + | </source> | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | ;Invocando funciones del sistema | ||
| + | *El operador anterior (comillas invertidas) es igual que la funcion '''''shell_exec()''''' | ||
| + | http://php.net/manual/es/function.shell-exec.php | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | ;operadores lógicos (and,&&, or, ||, xor !) | ||
| + | http://php.net/manual/es/language.operators.logical.php | ||
| + | :Funcionan por cortocircuito | ||
| + | :El operador '''''xor''''' da verdad si los operando son de diferente valor uno true y el otro false | ||
| + | :La notación '''''and''''' y '''''&&''''' representan el mismo operador, igual ocurre con '''''or''''' y '''''||''''' | ||
| + | *La diferencia entre los operadores es la prioridad | ||
| + | http://php.net/manual/es/language.operators.precedence.php | ||
| + | |} | ||
Revisión de 20:29 29 sep 2016
_ Variables static
function contador() { static $a=0; $a++; // Cada vez que se ejecuta la función, se incrementa el valor de $a } </div> |


