Salta el contingut

MVC: Introducció

Introducció a MVC

MVC és una arquitectura de desenvolupament d'aplicacions que està basada en POO i que ens marcarà el camí de com s'ha de desenvolupar una aplicació.

Per posar-nos en context tenim tres parts que podem diferenciar quan escrivim codi php:

  • la lògica de la programació: sentències, funcions, variables... que resolen el requeriment de l'aplicació
  • les dades que desen a la bdd i que donen persistència a la informació
  • les interfícies que usem per mostrar o entrar informació

D'alguna manera podriem assimilar-ho a:

  • if, while, function, $var, ...
  • SQL, transaccions, ...
  • HTML, CSS... (php echo)

Fins ara podiem tenir en una mateixa pàgina PHP aquestes tres funcions agrupades en la lògica desenvolupada

<?php
    $servername = "localhost";
    $username = "username";
    $password = "password";
    $dbname = "myDB";

    // Create connection
    $conn = new mysqli($servername, $username, $password, $dbname);
    // Check connection
    if ($conn->connect_error) {
      die("Connection failed: " . $conn->connect_error);
    }

    $sql = "SELECT id, firstname, lastname FROM MyGuests";
    $result = $conn->query($sql);

    if ($result->num_rows > 0) {
      // output data of each row
      while($row = $result->fetch_assoc()) {
        echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
      }
    } else {
      echo "0 results";
    }
    $conn->close();
    ?> 

Quan desenvolupem aplicacions usant el MVC, usarem la POO per aplicar la lògica:

1
2
3
4
5
6
7
<?php
      $dades = Client->ObtenirDades(25);
      if ($dades)
          Pantalla->Mostrar($dades);
      else
         Pantalla->NoDades();
?>

Com podeu observar el codi es minimitza moltíssim, on:

Client, és el nostre model de dades if, és la lògica que desenvolupem Pantalla, és la part de la Vista que mostrem el resultat

Òbviament ens caldrà desenvolupar el codi associat al mètode ObtenirDades(25);, on realment al seu interior hi haurà la consulta SQL a la BdD

El mètode Mostrar el que faria seroa llegir un fitxer HTML + CSS on li pasariem el valor de $dades que caldria que seguint un diccionari de dades ens formati la informació segons calgui

Al mercat existeixen frameworks de desenvolupament que ens ajuden a treballar d'aquesta manera, per exemple https://symfony.com/ o https://laravel.com

Una de les característiques que usarem seran les rutes, que farà que no fem crides a diferents pàgines PHP, sino que ho farem mitjançant URL

És a dir:

http://www.gestio.com/client/consulta.php?id=33

Es transformarà en:

http://www.gestio/client/33

Aquesta funcionalitat serà configurada amb el fitxer .htaccess del Apache

Com funciona la ment d'un desenvolupador?