Diferencia entre revisiones de «Usuario:ManuelRomero/php/introduccion»

De WikiEducator
Saltar a: navegación, buscar
 
(No se muestran 54 ediciones intermedias de 2 usuarios)
Línea 1: Línea 1:
__NOEDITSECTION__
+
<!--{{:Usuario:ManuelRomero/php/nav}}-->
 +
 
 +
<!--__NOEDITSECTION__-->
 
{|cellpadding="5" cellspacing="6" style="width:100%;background:#DFFFFF; border-style:solid; border-width:2px; border-color:#0066FF;"  
 
{|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;" |
 
| width="100%" valign="top" style="padding: 0; margin:0px;" |
Línea 8: Línea 10:
 
[[Imagen:DWES_TituloTema3.gif|center]]
 
[[Imagen:DWES_TituloTema3.gif|center]]
 
|}
 
|}
 +
__NOTOC___
 +
{{#widget:Slides}}
 +
<div class="slides layout-regular template-default">
 
<div class="slide">
 
<div class="slide">
=Variables, constantes y tipos de datos=
+
===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>
  
 
<div class="slide">
 
<div class="slide">
<!--1---------------------------------->
+
===Como escribir PHP 1===
{{Pregunta|
+
*Dentro de páginas html
Qué es un '''''tipo de dato'''''
+
'''<?php'''
Qué es una '''''variable'''''
+
  '' 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>
  
 
<div class="slide">
 
<div class="slide">
<!--1---------------------------------->
+
===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|
 
{{Definicion|
Un tipo de dato es un conjunto de valores para los cuales hay definidos una serie de operaciones}}
+
'''''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
{{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.
 
*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.
*Lenguajes fuertemente tipos o débilmente tipados o tipado dinámico
+
</div>
*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.
+
 
<div class="slide">
 
<div class="slide">
=== Variables===
+
;tipado dinámico
====Identificador====
+
*Lenguajes fuertemente tipos o débilmente tipados
*En php las variablas se prepresentas con el signo $ sguido d un nomb re
+
*Esto tiene que ver con el hecho de que cada variable en un momento dado tiene un tipo, y lo podemos saber
{{Puntos clave|$(a..zA..Z_0-9)*}}
+
*Esto ocurre en php
 +
</div>
  
'''<?php'''
+
<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
 +
{{Nota|identificador = $[_|a.zA..Z][_|a..zA..Z0..9]*}}
 +
<source lang=php>
 +
<?php
 
   $miVariable= 8;/*Variable de tipo entero*/
 
   $miVariable= 8;/*Variable de tipo entero*/
 
   edad = 5/*Error en el identificador*/
 
   edad = 5/*Error en el identificador*/
 
   $5edad = 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
 
*El lenguaje es sensible a mayúsculas y minúsculas
**En los identificadores de variables
+
**En los identificadores de variables ($edad != $Edad)
**No lo es en nombres de funciones
+
**No lo es en nombres de funciones $calculaEdad(1990) != $CalculaEdad(1990)
**No lo es en palabras reservadas (if, then, else,...)
+
**No lo es en palabras reservadas (if o If o IF o iF,...)
 
</div>
 
</div>
=Valores y tipos de datos
+
 
En Php tenemos 8 tipos de datos
+
<div class="slide">
*tipos básicos
+
<!--4---------------------------------->
**entero  '''''integer'''''
+
 
 +
===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]+
 
  decimal  [0..9]+
 
  hexadecimal 0x[0..f]+
 
  hexadecimal 0x[0..f]+
Línea 55: Línea 236:
 
  binario 0b[01]+
 
  binario 0b[01]+
 
*Todos ellos pueden ser positivos o negativos
 
*Todos ellos pueden ser positivos o negativos
 +
</div>
  
**cadena  '''''string'''''
+
<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'''''
 
**real o coma flotante '''''float'''''
**Booleano '''''boolean'''''
+
<source lang=php>
 +
$valor=$0.2345;
 +
$valor=.54;
 +
$valor=7E-12;
 +
</source>
 +
</div>
 +
 
 +
<div class="slide">
 +
<!--4---------------------------------->
 +
;Booleano '''''boolean'''''
 
<source lang=PHP>
 
<source lang=PHP>
  TRUE FALSE
+
  $estado=TRUE;
 +
$estado=TrUe;
 +
$estado=falsE;
 
</source>
 
</source>
**NULL un tipo especial que solo tiene ese valor
+
</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>
 
<source lang=PHP>
  '''''NULL'''''
+
  $a=NULL;
 +
$a=null;
 
</source>
 
</source>
*tipos complejos
+
</div>
**objetos
+
**matrices
+
**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.
+
 
+
  
 +
<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">
 
<div class="slide">
 +
<!--4---------------------------------->
 
===Comentarios ===
 
===Comentarios ===
 
Son ignorados por el intérprete
 
Son ignorados por el intérprete
'''<?php'''
+
<source lang=php>
 +
<?php
 
  /*
 
  /*
 
  Este código no hace nada pero muestra
 
  Este código no hace nada pero muestra
Línea 87: Línea 317:
 
//Este es otro comentario de una sola línea
 
//Este es otro comentario de una sola línea
 
#Este es otro modo de hacer comentarios tipo script de linux
 
#Este es otro modo de hacer comentarios tipo script de linux
'''?>'''
+
  ?>
Este código nos visualizará
+
</source>
 +
*Este código nos visualizará
 
  Valor de la variable 16
 
  Valor de la variable 16
 
</div>
 
</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|
 
{{Actividad|
Probamos a hacer programas tontos donde asignavos y visualizamos valores
+
*Probamos a hacer programas sencillos donde asignamos y visualizamos valores
entero:
+
#entero:
cadena:
+
#cadena:
booleano:
+
#booleano:
real
+
#real
NULL
+
#NULL
 
}}
 
}}
 +
</div>
 +
 
<div class="slide">
 
<div class="slide">
 
===Valor de variable===
 
===Valor de variable===
*Una variable le asigno un valor en cualquier momento
+
*A una variable le puedo asignar un valor en cualquier momento
 
*El tipo de la variable depende del valor que tiene
 
*El tipo de la variable depende del valor que tiene
*función isset comprueba que una variable tenga valor
+
*Hay una serie de funciones del sistema relacionadas con los valores y las variables
  '''<?php'''
+
</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;
 
  $VariableValor= 5;
 
  print ("El valor de la variable es $VariableValor");
 
  print ("El valor de la variable es $VariableValor");
Línea 117: Línea 402:
 
  else
 
  else
 
     print ("OtraVariableValor no no tiene valor asignado");
 
     print ("OtraVariableValor no no tiene valor asignado");
   '''?>'''
+
   ?>
 +
</source>
 
</div>
 
</div>
  
<div class=slider>
+
<div class="slide">
=== Variables entera===
+
<!--4---------------------------------->
*Posible notación decimal/octal/hexadecimal
+
 
*Decimal
+
;[http://es1.php.net/manual/es/function.empty.php empty]
**$Numero=10;
+
<source lang=php>
*Octal
+
bool empty ($varriable)
**$NumeroOctal=067;
+
</source>
*Hexadecimal
+
*Determina si una variable no existe. Devuelve true si no existe o su valor está vacío
**$NumeroHex=0cA56B;
+
*Al imprimirlos con print los veré con valor decimal
+
*Para verlos en otras base hay que usar printf o format
+
 
</div>
 
</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=slider>
+
<div class="slide">
=== Variables reales===
+
{{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>
  
<div class=slider>
+
<div class="slide">
=== Variables booleanas===
+
<!--4---------------------------------->
*Interpretar otros tipos como booleanos
+
  
 +
;[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>
  
<div class=slider>
+
<div class="slide">
=== NULL===
+
<!--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>
  
<div class=slider>
+
<div class="slide">
=== Cadenas===
+
 
*Comillas dobles ""
+
*Todas ellas devuelve un booleano que indica si la variable, valor o expresion es o no de ese tipo,
*Comillas sencillas <nowiki>''</nowiki>
+
<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>
  
<div class=slider>
+
<div class="slide">
=== Funciones de salida===
+
{{Actividad|
Construcciones básicas para salida de caracrteres
+
Visualizar de qué tipo es la expresión mostrada en el código siguiente y visualiza el valor de la expresión}}
No son funciones (con o sin paréntesis)
+
<source lang=php>
====echo====
+
   $a=5;
Es el uso más sencillo
+
</source>
Imprime una cadena como argumentos
+
En la versión si paréntesis también puedes pasar una lista de argumentos.
+
'''<?php'''
+
Echo “primer argumento”, “segundo argumento”, “tercer argumeto”
+
   '''?>'''
+
====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>
  
<div class=slider>
+
<div class="slide">
=== Estructuras de control 1===
+
<!--4---------------------------------->
A continuación veremos las estructuras de control
+
 
Son de tres tipos
+
;[http://php.net/manual/es/function.unset.php unset]
#Selección
+
*Destruye la variable especificada perdiéndose su valor
#Iteración
+
void unset ($var)
#Secuenciales
+
Para construirlas necesitamos operadores
+
#Operadores lógicos
+
 
</div>
 
</div>
  
<div class=slider>
+
<div class="slide">
===Operadores lógicos===
+
=== Cadenas===
and
+
*En php las cadenas de caracteres, son expresiones literales
or
+
*Tenemos 4 maneras diferentes de poder expresar una cadena de caracteres como un literal
<nowiki>!</nowiki>
+
*Comillas dobles ""
xor
+
*Comillas sencillas <nowiki>''</nowiki>
&&
+
*Sintasix '''''heredoc'''''
<nowiki>||</nowiki>
+
*Sintaxis '''''nowdoc'''''
Funcionan por cortocircuito
+
Construyen expresiones booleanas y tras su evaluación retorna un valor booleano.
+
 
</div>
 
</div>
  
<div class=slider>
+
<div class="slide">
===Operadores lógicos===
+
;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>
  
<div class=slider>
+
<div class="slide">
===Operadores lógicos===
+
*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>
  
<div class=slider>
+
<div class="slide">
===Operadores ternario===
+
;Comillas simples
Expresión? SentenciaOKExpresion : SentenciaNoOkExpresion
+
*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>
  
 
+
<div class="slide">
<div class=slider>
+
<source lang=php>
===Selección if===
+
$nombre = 'pedro';
If ( condicion)
+
echo 'El valor de la variable $nombre es $nombre y \\ \'texto\' si que se ve entre comillas simples';
    Sentencia 1;
+
</source>
if  (condicion){
+
*La salida sería
    Sentencia 1
+
  El valor de la variable $nombre es $nombre y \ 'texto' si que se ve entre comillas simples';
    Sentencia 2
+
}
+
 
+
if  (condicion)
+
    Sentencia 1
+
else
+
      Sentencia 2
+
+
if condicion:
+
  Sentencia 1;
+
  endif;
+
 
</div>
 
</div>
  
<div class=slider>
+
<div class="slide">
===Seleccion else elseif===
+
;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>
  
<div class=slider>
+
<div class="slide">
===Seleccion switch===
+
<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>
  
<div class=slider>
+
<div class="slide">
===iteracion while===
+
;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>
  
<div class=slider>
+
<div class="slide">
===iteracion do-while===
+
<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>
 
</div>
  
<div class=slider>
 
===iteracion for===
 
for (expression_inicial; comprobacion_terminacion;exrpesion_incremento){
 
      sentencias;
 
}
 
Escribir un programa que visualice una tabla con las divisiones de los números que confluyen
 
  
</div>
+
<!--4---------------------------------->
  
<div class=slider>
+
<div class="slide">
===Leer datos===
+
 
*Para leer datos lo hacemos de un formulario
+
=== Funciones de salida===
*el formulario lo envía el cliente
+
*Construcciones básicas para salida de caracteres
*Obligatoriamente necesitamos el atributo name de la etiqueta input
+
*No son funciones (con o sin paréntesis) son '''''echo'''' '''''print'''''
*EJ. en el emisor tenemos
+
Dime un número:
+
<FORM ACTION="tabla.php" METHOD="GET">
+
<INPUT TYPE="text" NAME="numero"><BR>
+
<INPUT TYPE="submit" VALUE="Enviar">
+
 
</div>
 
</div>
Al presionar el botón de enviar se envía la página al servidor
 
La página que especificamos en el botón action la gestiona ''tabla.php'' en este caso
 
En el servidor para recuperar el valor utilizaremos la tabla supergobal
 
una tabla es una estructura indexada por índices
 
leeremos el índice nombre de variable de la tabla
 
$_GET o $_POST dependiendo de el método de envío
 
Valor numérico introducido: <?php echo $_GET['numero'] ?>
 
  
 +
<div class="slide">
 +
<!--4---------------------------------->
  
 
+
====echo====
<div class=slider>
+
*Es el uso más sencillo
===iteracion while===
+
*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>
<div class=slider>
+
 
===iteracion while===
+
<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>
  
 +
<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 class=slider>
 
=BASES DE DATOS=
 
*Para trabajar con bases de datos debemos
 
**Conectarnos
 
**Seleccionar
 
Normalmente también
 
**Realizaremos  Consulta o inserciones
 
**Procesar información
 
**Cerrar la base de datos
 
Para realizar estas acciones disponemos de diversas funciones específicas dentro de PHP
 
 
</div>
 
</div>
  
 +
<div class="slide">
  
<div class=slider>
+
{{Actividad|
===CONECTAR AL SERVIDOR MYSQL===
+
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é}}
resource mysql_connect($hostname, $user, $password);
+
*Los parámetros de tipo string identificarían
+
**$hostname = nombre del host
+
**$user =  usuario
+
**$password = contraseña
+
*Esta función retorna el recurso de la conexión
+
**FALSO si no se ha conectado
+
 
</div>
 
</div>
  
 +
<div class="slide">
  
<div class=slider>
+
{{Actividad|
===SELECCIONAR LA BASE DE DATOS===
+
*Haz un programa que a partir de precio hora y de número de horas calcule una nómina, teniendo en cuenta que:
Dentro del servidor tendremos diferentes bases de datos
+
#mas de 40 horas son extras (1.5 el precio base)
Antes de trabajar con una debemos seleccionarla
+
#IRPF < 600E exento
Si no la seleccionamos se intentará operar con la última seleccionada
+
#Entre 600 y 800 5%
bool mysql_select_db ($namedatabase, $conexion)
+
#Mas de 800 12 %
*Ejemplo
+
*Nos debe de dar detalle del bruto, descuentos y neto de salario}}
<?php
+
$conexion = mysql_connect('localhost', 'manolo', 'manolo');
+
if (!$conexion) {
+
    die('No conectado : ' . mysql_error());
+
}
+
// Seleccionar alumnos como base de datos activa
+
$db_seleccionada = mysql_select_db('alumnos', $conexion);
+
if (!$db_seleccionada) {
+
    die ('No puedo conectar con la BD alumno : ' . mysql_error());
+
}
+
?>
+
 
</div>
 
</div>
  
<div class=slider>
+
<div class="slide">
===FUNCIONES die()- mysql_error() y concatenador .===
+
 
die('texto');
+
{{Actividad|
Es una función que aborta la ejecución
+
Un programa que nos diga si un número es o no primo}}
previamente visualiza el mensaje del parámetro por pantalla
+
mysql_error()
+
visualiza el error que da el sistema por el que no ha podido conectar
+
.
+
Es un concatenador de cadenas
+
echo "Esto es una cadena " . "Esta es otra concatenada a la anterior"
+
 
</div>
 
</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 class=slider>
 
===CREAR CONSULTA===
 
resource mysql_query ( string $consulta );
 
consulta es la consulta a la base de datos
 
<?php
 
$resultado = mysql_query('SELECT * from alumnos');
 
if (!$resultado) {
 
    die('Invalid query: ' . mysql_error());
 
}
 
?>
 
 
</div>
 
</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=slider>
+
<div class="slide">
===PROCESAR INFORMACIÓN===
+
===Constantes predefinidas===
Ahora ya tenemos los datos con los que queremos trabajar
+
*Como en otros  lenguajes, existen una serie de constantes predefinidas
los tenemos en una variable de tipo consulta
+
*Nos las ofrece el entorno y dependerán de él para su valor
ahora debemos recorrela
+
*PHP Ofrece un gran número de  constantes predefinidas http://php.net/manual/es/reserved.constants.php
La variable es como un vector de filas que hay que recorrer
+
*En php hay 8 constantes que su valor puede cambiar dependiendo del entorno donde se ejecutan
  array mysql_fetch_row ( resource $resultado )
+
  [http://php.net/manual/es/language.constants.predefined.php constantes] predefinidas en php
esta función devuelve falso o 0 cuando ya no retorna más filas
+
</div>
si no retorna la siguiente fila de la consulta
+
</div>
la forma de acceder a cada campo será por el índice del array
+
  array[0] .. array[n]
+
  
<?php
+
<div class="slide">
$resultado = mysql_query("SELECT nombre, apellido, direccion FROMM alumnos");
+
if (!$resultado) {
+
    die("Could not run query: " . mysql_error();
+
}
+
$c=0;
+
while ($alumno=mysql_fetch_row($result)){
+
      echo "alumno $c nombre $alumno[0] apellido $alumno[1] direccion $alumno[3]");
+
      $c++;
+
?>
+
</div>
+
  
<div class=slider>
+
{{Tarea|
 +
Realiza un programa que visualice las constantes predefinidas '''variables''' vistas anteriormente, y al menos otras 8 de las constantes predefinidas '''estandar'''}}
 +
</div>
  
===GESTIÓN DE BASE DE DATOS===
+
<div class="slide">
Conocer todas las bases de datos
+
===Ambito de una variable===
mysql_connect('localhost', 'mysql_user', 'mysql_password');
+
*http://php.net/manual/es/language.variables.scope.php
Todas las tablas de una base de datos
+
*Ya sabemos que en PHP puedes utilizar variables en cualquier lugar de un programa.
resource mysql_list_tables ( string $database [, resource $link_identifier ])
+
*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>
Los campos de una tabla
+
 
resource mysql_list_fields ( string $database_name , string $table_name [, resource $link_identifier])
+
<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>
<div class=slider>
+
 
=FUNCIONES=
+
<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>
 
</div>
<div class=slider>
+
====Variables '''''static'''''====
===Definición de funiones=
+
*Si una variable la declaramos static, hacemos que su posición de memoria no se elimine aunque no sea accesible por el script
function ‘’’nombre_de_funcion’’’ (’’’’lista_de_parametros’’’’){
+
*Cuando volvamos a una sección del script donde vuelve a ser accesible, entonces retomaremos esa posicion de memoria, con el valor que tuviera
’’’’codigo a ejecutar ’’’’
+
<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>
<div class=slider>
+
 
===Ejemplo de funcion===
+
<div class="slide">
*Realiza una función que convierta de mayúsculas a minúsculas
+
;static
</div>
+
*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.
<div class=slider>
+
{{Tarea|
===Generar pdf desde el código php===
+
*Haz un programa que llame 20 veces a una función
pdf=new mPDF();
+
*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'''''
$mpdf->WriteHTML('<p>Hello World</p>');
+
}}
$mpdf->Output();
+
 
</div>
 
</div>
|}
 

Última revisión de 06:11 1 may 2023


DWES TituloTema3.gif

_

Introducción

  1. PHP (acrónimo de PHP: Hypertext Preprocessor)
    1. es un lenguaje de código abierto
    2. muy popular (Podríamos pensar en un estándar?)
    3. especialmente adecuado para desarrollo web
    4. en desarrollos web
      1. Se ejecuta en el servidor web
      2. Es incrustrado en HTML.
      3. El cliente solo ve el resultado de la ejecución nunca el código

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.
Otros modos menos usados
Estilo asp
<%
   instrucciones
%>
  • Para ello hemos de tener habilitado la etiqueta de php.ini
asp_tags 1
Estilo corto
<?
   instrucciones
?>
  • Para ello hemos de tener habilitado la etiqueta de php.ini
short_open_tag 1
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

Dónde poner el código embebido




Icon qmark.gif

Pregunta

Dónde escribir código php


  • Donde queramos que se ejecute algo

CodigoPHP.png
  • Se ejecuta como si fuera un solo programa

Como escribir PHP 2

  • Escribiendolo en un fichero aparte
    • incluimos el fichero explícitamente
  include('ruta/nobrefichero');
  require('ruta/nobrefichero');
  include_once('ruta/nombrefichero');
  require_once('ruta/nombrefichero');


Icon inter.gif

Recursos de la Web



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
Semántica
Habla del significado
Estudiaremos alguna peculiaridad como el hecho de que php es un lenguaje muy orientado a expresiones

Instrucciones en un lenguaje de programacion

  1. Inicio Fin de bloque
  2. Declaraciones (variables, constantes, funciones, clases, objetos, ...)
  3. Asignacion
  4. Instrucion/funcion de leer del teclado, escribir por pantalla
  5. Invocación (llamada a función o método)
  6. Estructura de control (selectiva, iterativa)
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
 { //Instrucción de inicio de bloque
 } //Instrucción de fin de bloque

Declaraciones

  1. De variables
  2. De constantes

(Luego veremos funciones y en otro tema clases y objetos)



Icon qmark.gif

Pregunta

  • Qué es un tipo de dato
  • Qué es una variable




Icon define.gif

Definición

Un tipo de dato es un conjunto de valores para los cuales hay definidos una serie de operaciones



Icon define.gif

Definición

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


PHP
Tipado dinámico'
  • Una características semántica muy, muy importante de php


Icon key points.gif

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.
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
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.


Icon key points.gif

Puntos clave

PHP es un lenguaje de tipado dinámico



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.
PHP y variables


Icon summary.gif

Resumen

  1. Php fuertemente tipado
  2. Php tipado dinámico
  3. Php no es estricto en la declaracion de variables (no hay que declararlas antes de usarlas)


identificador de variables

(Comment.gif: a.zA..Z][_)


 <?php
   $miVariable= 8;/*Variable de tipo entero*/
   edad = 5/*Error en el identificador*/
   $5edad = 5 /*Error en el identificador */
 ?>
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,...)

Valores y tipos de datos

http://php.net/manual/es/language.types.intro.php
  • En Php tenemos 8 tipos de datos
  • En php tenemos
  1. 5 tipos básicos o primitibos (booleano, entero, real, string, NULL)
  2. 3 compuestos (array, objeto, recurso)
tipos básicos
  1. 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
**$Numero=10;
*Octal
**$NumeroOctal=067;
*Hexadecimal
**$NumeroHex=0cA56B;
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
cadena string
$frase="Esto es un literal de cadena de caracteres"
    • real o coma flotante float
 $valor=$0.2345;
 $valor=.54;
 $valor=7E-12;
Booleano boolean
 $estado=TRUE;
 $estado=TrUe;
 $estado=falsE;
NULL
  • un tipo especial que solo tiene ese valor
  • Una variable tiene el valor null
  1. Si aún no se le ha asignado valor, o éste se ha destruido (unset()
  2. Si se le ha asignado explícitametne el valor NULL.
 $a=NULL;
 $a=null;
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

Comentarios

Son ignorados por el intérprete

<?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
  ?>
  • Este código nos visualizará
Valor de la variable 16

</source>

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
<?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"
?>


Icon activity.jpg

Actividad

  • Probamos a hacer programas sencillos donde asignamos y visualizamos valores
  1. entero:
  2. cadena:
  3. booleano:
  4. real
  5. NULL




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

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
var_dump
 void var_dump($expresion)
  • Nos da información sobre la estructura de un valor resultado de una expresion
isset
 bool isset ( $variable )
  • verifica que una variable tiene valor (está definida y no tiene un valor null)
<?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");
  ?>
empty
bool empty ($varriable)
  • Determina si una variable no existe. Devuelve true si no existe o su valor está vacío



Icon activity.jpg

Actividad

Probamos las fuciones var_dump() que nos da información sobre el valor y el tipo




Icon activity.jpg

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





Icon activity.jpg

Actividad

  • Define las siguientes variables que se especifican en el código siguiente y verifica el resultado con empty()
 $num=0;
 $nombre="";
 $nombre=null;
 $nombre="0";
 $pregunta = FALSE;




gettype]
  • Devuelve el tipo de una variable
string gettype($variable)
[1]is-double is-int, is-xxx
  • son funciones donde xxx especificado en el último nombre, puede ser cualquiera de los tipos

Funciones is-xxx.png

  • Todas ellas devuelve un booleano que indica si la variable, valor o expresion es o no de ese tipo,
string is_int($variable);
string is_double($variable);
string is_bool($variable);
string is_integer($variable);
string is_null($variable);
string is_string($variable);
...


Icon activity.jpg

Actividad

Visualizar de qué tipo es la expresión mostrada en el código siguiente y visualiza el valor de la expresión



  $a=5;
unset
  • Destruye la variable especificada perdiéndose su valor

void unset ($var)

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 ''
  • Sintasix heredoc
  • Sintaxis nowdoc
Comillas dobles
  • En ellas se interpretan los caracteres especiales
  1. $ seguido de un nombre, interpreta que es una variable y toma su valor (null si no tiene valor o no está definida
  2. \ es un caracter de secuencia de escape, e interpreta que el carácter siguiente tiene un significado especial \\ \a \n \r \t , ...
  • Si queremos que se ignore un carácter especial, éste ha de ir precedido por el caracter \
$nombre = 'pedro';
echo "El valor de la variable \$nombre es $nombre";
  • El resultado sería
El valor de la variable $nombre es pedro
Comillas simples
  • En ellas solo se interpreta el carácter, seguido de \ o bien seguido de la barra invertida \\ comilla simple \'
  • El resto de caracteres no se interpretan
$nombre = 'pedro';
echo 'El valor de la variable $nombre es $nombre y \\ \'texto\' si que se ve entre comillas simples';
  • La salida sería
El valor de la variable $nombre es $nombre y \ 'texto' si que se ve entre comillas simples';
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
<?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;
<?
  • La palabra final no debe tener ningún espacio ni tabulador antes
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
<?php
$nombre=pedro;
$frase = <<<'FINAL'
El valor de $nombre
es $nombre, pero aquí 
no lo veo por que es newdoc
FINAL;


Funciones de salida

  • Construcciones básicas para salida de caracteres
  • No son funciones (con o sin paréntesis) son echo' print

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”
 ?>

print

Tiene dos diferencias con echo

  1. Sólo puede aceptar un argumento
  2. Devuelve un valor que representa si la sentencia ha tenido o no éxito
  • Para las siguientes actividades debes conocer las estructuras de control básicas.


Icon activity.jpg

Actividad

Haz un programa que sume los 100 primeros números






Icon activity.jpg

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é





Icon activity.jpg

Actividad

  • Haz un programa que a partir de precio hora y de número de horas calcule una nómina, teniendo en cuenta que:
  1. mas de 40 horas son extras (1.5 el precio base)
  2. IRPF < 600E exento
  3. Entre 600 y 800 5%
  4. Mas de 800 12 %
  • Nos debe de dar detalle del bruto, descuentos y neto de salario





Icon activity.jpg

Actividad

Un programa que nos diga si un número es o no primo





Icon activity.jpg

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




Constantes

  • Se definen con la funcion define()
define("IVA",0.21);
$total=$base*(1+IVA);
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()

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
constantes predefinidas en php



Icon assess.gif

Tarea

Realiza un programa que visualice las constantes predefinidas variables vistas anteriormente, y al menos otras 8 de las constantes predefinidas estandar



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.
Ambito de una variable
  • En función de esto tenemos variables locales a la función y variables locales al script
$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)
}
Ambito de una variable
  • Para poder hacer dentro de una función a una variable definida fuera, he de usar la palabra reservada global
$a = 1;
function prueba()
{
    global $a;
    $b = $a;
    // En este caso se le asigna a $b el valor 1
}


Icon activity.jpg

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




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
function contador()
{
    static $a=0;
    $a++;
    // Cada vez que se ejecuta la función, se incrementa el valor de $a
}

</div>

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.


Icon assess.gif

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