|
|
Línea 162: |
Línea 162: |
| [[Imagen:codigoPHP.png|center|900px]] | | [[Imagen:codigoPHP.png|center|900px]] |
| *Se ejecuta como si fuera un solo programa | | *Se ejecuta como si fuera un solo programa |
| + | *A la hora de incluir php podemos se usa mucho la filosofía Modelo Vista /Controlador que veremos en otro tema |
| + | {{MRM_Resumen|Title=Modelo vista controlador| |
| + | *Trata de separar el código según su cometido, de forma muy resumida |
| + | *Hay acciones que realizan cálculos y obtienen resultados (Controlador |
| + | *Hay acciones que lo que hacen es visualziar valores (Vista) |
| + | *Hay acciones que se encargan de interactuar con la base de datos (Modelo) |
| + | }} |
| + | {{MRM_Puntos clave|Title=Empecemos aplicar el modelo vista controlador| |
| + | *Podemos llevar este criterio desde el principio siguiente el esquema siguiente |
| + | Plegable|hide|esqueleto MVC| |
| + | <source lang=html5> |
| + | </source> |
| + | }} |
| + | |
| + | {{MRM_Ejemplo|Title=Programa para ver si un número es o no par| |
| + | No te preocupes si no entiendes el código, lo iremos viendo |
| + | <source lang=php> |
| + | <?php |
| + | |
| + | //-----------CONTROLADOR----------------------------- |
| + | //Instrucciones que realizan cálculos |
| + | //Guardo el resultado que quiero mostrar en variables |
| + | $a = rand(1, 100); //Genero un número aleatorio |
| + | $fecha = date("d m Y", time()); //Obtenemos la fecha |
| + | $title = "Hoy, $fecha, veremos si '$a' es par o impar "; //Creo un título |
| + | if ($a % 2 == 0) //Si el número es par |
| + | $msj = "El número $a es par"; |
| + | else |
| + | $msj = "El número $a es impar"; |
| + | ?> |
| + | |
| + | <!-- Ahora metemos el código php cuando lo necesitemos--> |
| + | <!------------------- VISTA (solo la parte php)-----------------------> |
| + | <!DOCTYPE html> |
| + | <html> |
| + | <head> |
| + | <meta charset="UTF-8"> |
| + | <title>probando php</title> |
| + | </head> |
| + | <body> |
| + | <h1> <?php echo $title ?></h1> |
| + | <hr /> |
| + | <h3> <?php echo $msj ?></h3> |
| + | |
| + | </body> |
| + | </html> |
| + | </source> |
| + | |
| + | |
| + | }} |
| + | |
| + | |
| + | |
| + | }} |
| + | |
| + | |
| </div> | | </div> |
| | | |
Revisión de 22:07 9 oct 2017
Introducción a PHP
Sección de introducción a PHP
- En esta sección veremos qué es el lenguaje php y para qué sirve
|
Qué es php
- PHP (acrónimo de PHP: Hypertext Preprocessor)
De php podríamos decir
- Es un lenguaje de código abierto
- Muy popular (Podríamos pensar en un estándar?), una gran comunidad de soporte en internet que aporta, colabora y soluciona dudas
- Especialmente adecuado para desarrollo web (Se puede usar como lenguaje de escritorio, pero no es su propósito).
- Actualmente está la versión 7.2, aún en beta (28-Septiembre-2017), siendo la 7.1.10 la última estable
- Ver las nuevas características de php
- Se usa mucho la versión 5.9
- características de php
Tip:
- En las aplicaciones de desarrollo web
- Se ejecuta en el servidor web
- Es incrustado en HTML.
- El cliente solo ve el resultado de la ejecución nunca el código
- Obtención del lenguaje de marcas para mostrar en el cliente
- El documento PHP, una vez interpretado correctamente en el servidor, produce una página HTML que será enviada al cliente.
|
- El servidor en acción
- El código PHP está embebido en documentos HTML,
- Esto permite introducir dinamismo fácilmente a un sitio web.
|
- El servidor en acción
- El intérprete PHP ignora el texto del fichero HTML
- Hasta que encuentra una etiqueta de inicio del bloque de código PHP embebido.
- Entonces interpreta las instrucciones hasta el final de etiqueta generando la salida correspondiente que se añade al documento html que se entrega al cliente (en caso de que las instrucciones lo generen)
|
Restricciones del servidor con php
- Como PHP se ejecuta del lado del servidor sólo puede tener acceso a los datos del propio servidor.
- No puede acceder a los recursos del cliente
- No puede saber qué hora es en el cliente
- No puede acceder a los archivos del cliente
- Salvo la excepción de las Cookies
Configuraciones
- PHP se puede instalar como un servicio independiente (PHP-FPM (FastCGI Process Manager)) o como un módulo de apache php5-mod. Realmente es más eficaz por temas de memoria que corra como un servicio independiente, siendo éste, un tema más de administración que de desarrollo.
- Configuración
Por comodidad (todo centrado en el servicio de apache2) en este módulo lo hemos instalado como un módulo de apache, pero en producción se suele instalar como servicio independiente (en este caso se ha de rebotar el servicio de apache o ngix (según servidor) independientemente del servicio de php según los ficheros de configuración que se modifiquen en un momento dado.
En cualquier caso, al instalar php, bien como módulo de apache o como servicio independiente, se crea un fichero de cofiguración dónde tenemos las diferentes directivas que podremos modificar (recordad xdebug que modificamos en php.ini).
Cómo escribir PHP
<?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
Probando primer programa
Tip: existen una función llamada phpinfo() que vamos a probar la información que genera
- Haz un programa que en php que ejecute la función phpinfo()
Primer programa |
---|
<?php
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<?php
phpinfo();
?>
</body>
</html>
?>
|
|
Dónde poner el código embebido
Pregunta
Dónde escribir código php
|
- Donde queramos que se ejecute algo
- Se ejecuta como si fuera un solo programa
- A la hora de incluir php podemos se usa mucho la filosofía Modelo Vista /Controlador que veremos en otro tema
Modelo vista controlador
- Trata de separar el código según su cometido, de forma muy resumida
- Hay acciones que realizan cálculos y obtienen resultados (Controlador
- Hay acciones que lo que hacen es visualziar valores (Vista)
- Hay acciones que se encargan de interactuar con la base de datos (Modelo)
|
Empecemos aplicar el modelo vista controlador
- Podemos llevar este criterio desde el principio siguiente el esquema siguiente
Plegable
|
|
Programa para ver si un número es o no par
|
|
No te preocupes si no entiendes el código, lo iremos viendo
<?php
//-----------CONTROLADOR-----------------------------
//Instrucciones que realizan cálculos
//Guardo el resultado que quiero mostrar en variables
$a = rand(1, 100); //Genero un número aleatorio
$fecha = date("d m Y", time()); //Obtenemos la fecha
$title = "Hoy, $fecha, veremos si '$a' es par o impar "; //Creo un título
if ($a % 2 == 0) //Si el número es par
$msj = "El número $a es par";
else
$msj = "El número $a es impar";
?>
<!-- Ahora metemos el código php cuando lo necesitemos-->
<!------------------- VISTA (solo la parte php)----------------------->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>probando php</title>
</head>
<body>
<h1> <?php echo $title ?></h1>
<hr />
<h3> <?php echo $msj ?></h3>
</body>
</html>
|
}}
Escribir PHP con directivas de inclusión
- Podemos escribir el código php escribiéndolo en un fichero aparte y luego lo incluimos.
- Incluimos el fichero explícitamente
- Para ello usamos directivas o instrucciones del tipo include
include('ruta/nobrefichero');
require('ruta/nobrefichero');
include_once('ruta/nombrefichero');
require_once('ruta/nombrefichero');
- Ambas son palabras reservadas del lenguaje y sirven para incluir el contenido de un fichero con sentencias php en esa posición del código.
- Ambas incluyen el contenido de un fichero php en esa posición
- Con include si no se encuentra se continúa ejecutando en esa posición
- Con require si no está el fichero se detiene en ese punto la ejecución del script
|
include/require Vs include_once/require_once
- Ambas incluyen el contenido de un fichero php en esa posición
- include/require siempre buscan e incluyen el fichero en esa posición
- include_once/require_once antes de incluirlo mira a ver si ya lo incluyó previamente en cuyo caso ya no lo hace
|
Probando include require
Crea 4 ficheros con el siguiente código
fichero_include.php
<?php
echo "<b><i>Hola desde un fichero include </b></i><hr />";
?>
fichero_include_once.php
<?php
echo "<b><i>Hola desde un fichero include once </b></i><hr />";
?>
fichero_require.php
<?php
echo "<b><i>Hola desde un fichero require </b></i><hr />";
?>
fichero_require_once.php
<?php
echo "<b><i>Hola desde un fichero require once </b></i><hr />";
?>
Ahora crea un programa principal dónde uses las instrucciones de inclusión vistas en este apartado.
<?php
echo "<h2>Ahora vamos a incluir un fichero con include</h2>";
include 'ficheros/fichero_include.php';
echo "<h2>ahora vamos a incluir un fichero con require</h2>";
require 'ficheros/fichero_require.php';
echo "<h2>Ahora vamos a incluir un fichero con include_once</h2>";
include_once 'ficheros/fichero_include_once.php';
echo "<h2>Ahora vamos a incluir un fichero con require_once</h2>";
require_once 'ficheros/fichero_require_once.php';
echo "<h2>Ahora vamos a incluir un fichero que no existe con include</h2>";
include 'ficheros/fichero_no_existe_include.php';
echo "Vemos que no pasa nada, por que el fichero no existe pero sigue <hr />";
echo "<h2>Ahora volvemos a incluir un fichero con include_once</h2>";
include_once 'ficheros/fichero_include_once.php';
echo "Vemos que no pasa nada, por que el fichero ya se había incluido y no se vuelve a incluir<hr />";
echo "<h2>Ahora volvemos a incluir un fichero con require_once</h2>";
require_once 'ficheros/fichero_require_once.php';
echo "Vemos que no pasa nada, por que el fichero ya se había incluido y no se vuelve a incluir<hr />";
echo "<h2>Ahora vamos a incluir un fichero con include para ver que sí que se vuelve a incluir</h2>";
include 'ficheros/fichero_include.php';
echo "<h2>Ahora vamos a incluir un fichero con require y vemos que sí se vuelve a incluir</h2>";
require 'ficheros/fichero_require.php';
echo "<h2>Ahora no incluimos con require un fichero que no existe</h2>";
require 'ficheros/fichero_no_existe_require.php';
echo "Esta línea ya no se imprimirá ni nada que vaya después de aquí";
?>
Tip:
- Siéntete cómoda en modificar el fichero y ver el resultado
- Observa que estas instrucciones no son exactamente funciones, por lo que no necesitan paréntesis (aunque se puede poner por mantener una homogeneidad con sintaxis del uso o invocación de funciones)
include 'ficheros/fichero_include.php'
//Es léxicamente y sintácticamente igual que
include ('ficheros/fichero_include.php');
|
Comentarios
- Son ignorados por el intérprete, no generan instrucciones, pero se consideran parte del software
- En php tengo 4 formas de hacer comentarios
<?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 comentario permite insertar información
Para que luego phpDocumentor genere una página web
Con la información de mi código
*/
- Este código nos visualizará lo siguiente
El resto del código será ignorado
- Aquí tienes la referencia para ver las diferentes directivas para generar código
- Más adelante en el curso las veremos.
probando comentarios
- Escribe la siguiente función anterior en un fichero php
function miFuncion($num1, $num2){
if ($num1>$num2)
return $num1;
else
return $num2;
Ahora justo en la línea de encima de función escribe
- y luego presiona intro
- Te debería de quedar
/**
*
* @param type $num1
* @param type $num2
* @return type
*/
function miFuncion($num1, $num2){
if ($num1>$num2)
return $num1;
else
return $num2;
|