PHP Conceptos básicos Modelo-Vista-Controlador
Revisión del 19:13 13 feb 2017 de Wiki (discusión | contribuciones)
Introdución
- Có que levamos visto ata o de agora xa podemos facer sitios webs en PHP, pero teremos certos problemas 'de mantemento' en caso de que o sitio sexa grande (con grande me refiro a unha cantidade alta de páxinas PHP).
- Isto é debido a que estamos a 'mesturar' aspectos, como por exemplo as funcións de acceso a datos (conexión e operacións) dentro das páxinas que van 'presentar' ao usuario a información.
- Imaxinemos como estamos a facer agora que queremos cambiar o acceso á base de datos e no canto de utilizar Mysql queremos usar SQLServer...
- Teríamos que ir a todas as páxinas cambiando as funcións de acceso a datos.
- Por outra banda, imaxinade que temos un equipo de persoas e queremos 'distribuír' o traballo en equipos.
- De tal forma que un equipo se encargue de 'maquetar' a información con CSS e HTML e outro que se adique a facer as chamadas á base de datos en busca de dita información.
- Esta labor non a poderíamos facer en 'paralelo' xa que a presentación de datos e o acceso aos mesmos se fan dentro da mesma páxina.
Melloras ao feito ata o de agora
- En primeiro lugar, poderíamos crear unha clase que se encargue da facer a conexión á base de datos e as operacións contra a mesma.
1 <?php 2 class Database { 3 4 const SERVIDOR = 'localhost'; 5 const USUARIO = 'user_php'; 6 const PASSWORD = 'user_php'; 7 const BD = 'PHP'; 8 9 private static $db; 10 private $conexion; 11 12 private function __construct() { 13 $this->conexion = new mysqli(SERVIDOR,USUARIO,PASSWORD,BD); 14 $this->conexion->set_charset('utf8'); 15 } 16 17 function __destruct() { 18 $this->conexion->close(); 19 } 20 21 public static function getConnection() { 22 if (self::$db == null) { 23 self::$db = new Database(); 24 } 25 return self::$db->conexion; 26 } 27 28 public static function consultaDB($consulta) { 29 $result=self::$db->$conexion->query($consulta); 30 } 31 32 }
<?php
include ('Database.php');
$conex = Database::getConnection();
if ($conex->connect_error){
die('Erro de Conexión (' . mysqli_connect_errno() . ') ' . mysqli_connect_error());
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="es" xml:lang="es">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Operacións BD</title>
</head>
<body>
<?php
$result=Database::consultaDB(Database::CONSULTAR_LIBROS);
if ($result && $result->num_rows>0){
echo "
"; while($row = $result->fetch_assoc()) { echo ''; printf("",$row["titulo"]); echo ''; } echo '| %s |
';
$result->free(); // Liberamos da memoria os recursos
}
else {
echo "Non hai datos que amosar!!!!";
}
$conex->close(); // Pechamos a conexión
?>
</body>
</html>
- Seguir este exemplo.
- Outro exemplo.
-- Ángel D. Fernández González -- (2016).