0% encontró este documento útil (0 votos)
83 vistas17 páginas

Estructura de Proyecto PHP con OO

El documento describe los pasos para aplicar el paradigma de programación orientada a objetos a un proyecto, incluyendo la organización de carpetas, el fichero config.php, las clases Aplicación y Usuario, y la clase Formulario. Se proveen ejemplos que implementan estos pasos de forma gradual.

Cargado por

Alberto
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
83 vistas17 páginas

Estructura de Proyecto PHP con OO

El documento describe los pasos para aplicar el paradigma de programación orientada a objetos a un proyecto, incluyendo la organización de carpetas, el fichero config.php, las clases Aplicación y Usuario, y la clase Formulario. Se proveen ejemplos que implementan estos pasos de forma gradual.

Cargado por

Alberto
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd

Tema 3.

3B
Aplicando OO al proyecto

1
Aplicando OO al proyecto
• El ejercicio 3 describe unos pasos a seguir para aplicar OO al proyecto y conseguir que tenga
una estructura más adecuada
• Es conveniente que estas adaptaciones las hagas en tu proyecto paso a paso para que te resulte
más fácil corregir los errores que se vayan produciendo
• En esta presentación se contemplan estos pasos:
1) Organización de carpetas
2) Fichero [Link]
3) Clase Aplicacion
4) Clase Usuario
5) Clase Formulario
• Ejemplos
• Ej33login: Programa sencillo de login de usuario que contiene los pasos 1 a 3
• Ej33usuario: Evolución de la aplicación del ejercicio 2 que contiene los pasos 1 a 4
• Ej33formulario: Aplica clase Formulario al ejercicio anterior

Tema 3.3: Código en el servidor - Objetos en PHP 2


1 Organización del proyecto en carpetas

includes\ Aquí dejamos los scripts que no son de vista


comun\ Aquí dejamos los scripts de apoyo para las vistas
[Link]
[Link]
[Link]
mysql\ Aquí dejamos los .sql
[Link]

Tema 3.3: Código en el servidor - Objetos en PHP 3


HTACCESS (Hypertext Access)
• Si lo deseas, puedes incluir un fichero HTACCESS para configurar
ajustes iniciales
• Se trata de un archivo de configuración utilizado por servidores web
basados en Apache
• Un archivo .htaccess se puede utilizar para:
• Proteger su sitio web con una contraseña
• Crear una página de error personalizada
• Redireccionar a otra página

[Link]

Tema 3.3: Código en el servidor - Objetos en PHP 4


2 [Link]
[Link] se ocupará de realizar las configuraciones del programa:
• session_start
• Soporte de UTF-8
• Localización (idioma y país)
• Formato de fecha
<?php
session_start();
/**Configuración del soporte de UTF-8, localización (idioma y país) y zona horaria */
ini_set('default_charset', 'UTF-8');
setLocale(LC_ALL, 'es_ES.UTF.8');
date_default_timezone_set('Europe/Madrid');
Tema 3.3: Código en el servidor - Objetos en PHP 5
2 [Link]

Invocación en programas:

require_once __DIR__.'/includes/[Link]’;

require: Si no se encuentra el programa, da error


_once: Evita que se incluya el fichero más de una vez
_DIR_: Variable predefinida que devuelve el directorio donde está el fichero

Tema 3.3: Código en el servidor - Objetos en PHP 6


3 Centralizar operaciones. Clase Aplicacion

La clase Aplicacion utiliza el patrón singleton para restringir a uno el número de


objetos que se pueden crear

Tema 3.3: Código en el servidor - Objetos en PHP 7


3 Centralizar operaciones. Clase aplicacion
<?php
/* Clase que mantiene el estado global de la aplicación. */
class Aplicacion
{
private static $instancia;
/** Permite obtener la única instancia de <code>Aplicacion</code>*/
public static function getSingleton() {
if ( !self::$instancia instanceof self) {
self::$instancia = new self;
}
return self::$instancia;
}
El resto del código puedes consultarlo en el ejercicio Ej33login

Tema 3.3: Código en el servidor - Objetos en PHP 8


3 Centralizar operaciones. Incluir en [Link]

Tienes que introducir estos cambios en [Link]

// Inicializa la aplicación
$app = Aplicacion::getSingleton();
$app->init(array('host'=>BD_HOST, 'bd'=>BD_NAME,
'user'=>BD_USER, 'pass'=>BD_PASS));

register_shutdown_function(array($app, 'shutdown'));

Tema 3.3: Código en el servidor - Objetos en PHP 9


4 Gestión de usuarios integrada
• El ejercicio Ej33usuario incorpora la clase Usuario al ejemplo del ejercicio2
• Se han realizado las adaptaciones oportunas para utilizar [Link],
Aplicació[Link] y [Link] eliminando el código innecesario
• Estos programas tienen la misma estructura:
• [Link]
• [Link]
• [Link]
• [Link]
• [Link]
• [Link]
• Difieren en el código necesario para gestionar lo que aparece en el apartado
contenido

Tema 3.3: Código en el servidor - Objetos en PHP 10


Métodos de la clase usuario
public static function buscaUsuario($nombreUsuario)
Devuelve un objeto Usuario con la información del usuario $nombreUsuario, o false si
no lo encuentra

public function compruebaPassword($password)


Comprueba si la contraseña introducida coincide

public static function login($nombreUsuario, $password)


Devuelve un objeto Usuario si el usuario existe y coincide su
contraseña. En caso contrario, devuelve false

public static function crea($nombreUsuario, $nombre, $password, $rol)


Crea un nuevo usuario con los datos introducidos por parámetro
Tema 3.3: Código en el servidor - Objetos en PHP 11
Función header

if (! isset($_POST['login']) ) {
header('Location: [Link]');
exit();

La función header provoca una redirección

[Link]

Tema 3.1 Ejecución de código en el servidor 12


Operador ternario

<?php
// Ejemplo de uso para: Operador Ternario
$action = (empty($_POST['action'])) ? 'default' : $_POST['action'];

// Lo anterior es idéntico a esta sentencia if/else
if (empty($_POST['action'])) {
    $action = 'default';
} else {
    $action = $_POST['action'];
}

?>

Tema 3.1 Ejecución de código en el servidor 13


Operador ternario: recomendable no apilar
condiciones
<?php
// a primera vista, lo siguiente parece tener la salida de 'true'
echo (true?'true':false?'t':'f');

// sin embargo, la salida real de lo anterior es 't'
// esto se debe a que las expresiones ternarias se evalúan de izquierda a derecha

// la siguiente es una versión más obvia del mismo código anterior
echo ((true ? 'true' : false) ? 't' : 'f');

// aquí, se puede ver que la primera expresión es evaluada como 'true', que
// a su vez se evalúa como (bool)true, retornando así la rama verdadera de la
// segunda expresión ternaria.
?>
Tema 3.1 Ejecución de código en el servidor 14
5 Clase formulario

• La gestión de los formularios HTML es muy similar por lo que es


posible utilizar el patrón TemplateMethod
• Se utilizará una clase Formulario para simplificar la creación y gestión
de formularios de toda la aplicación
• El ejemplo Ej33formulario aplica la clase formulario al ejemplo
Ej33usuario

Tema 3.1 Ejecución de código en el servidor 15


Objetivos al aplicar la clase Formulario

• Crear la clase FormularioLogin que hereda de Form e incluir toda la


lógica de gestión del formulario
• Crear la clase FormularioRegistro que hereda de Form e incluir toda la
lógica de gestión del formulario
• Modificar los scripts [Link] y [Link] para que utilicen las
clases anteriores
• Eliminar los scripts [Link] y [Link] que ya
no son necesarios

Tema 3.1 Ejecución de código en el servidor 16


Referencias

Clase usuario
[Link]
Clase aplicacion
[Link]

Tema 3.3: Código en el servidor - Objetos en PHP 17

También podría gustarte