Salta el contingut

Desenvolupament web dinàmic backend amb php: Com ho fem per...?

En aquesta secció exposarem diferents exemples de codi per implementar diferents conceptes de backend, per exemple, com depurem el codi,

Depurar un programa

La manera més bàsica de depurar un codi php és mostrar pel fluxe de codi HTMLque genera el tipus i valor que conté la variable:

echo
<?php
    $num = 3;
    echo $num;
    $num++;
    echo $num;
?>
Ens retornarà al fluxe de 'HTML' el valor de la variable '$num'

Podem fer-ho més informatiu:

echo
<?php
    $num = 3;
    echo "$num:" . $num;
    $num++;
    echo "$num:" . $num;
?>

Però sovint ens pot interessar observar el tipus que té o fins i tot tots els possibles valors si és un tipus compost o objecte, per aquest motiu usarem:

var_dump
<?php
    $num = 33;
    var_dump($num);
?>
L'avantatge és que ara ens indica el valor i el tipus de dades que conté la variable.

Success

També tenim alguns complements a dins de l'IDE que es poden connectar amb Apache i depurar línia a línia

Xdebug

Xdebug conjuntament amb el VSC, permetrar depurar el codi de manera eficient.

Obtenir les dades passades per URL

Quan fem una petició HTTP podem passar una serie de dades. entre elles la URL, que és una cadena de caracters de màxim 255 caràcters i que pot contenir una sèrie d’arguments. Aquests arguments estan a continuació del símbol ? i cada un dels que passem estaran diferenciats per &

http://www.exemple.com/alta.php?dni=40123456X&nom=Judit

No poden contenir espais i estan tractats com a text

<?php
    if (isset($_GET[‘dni’])
        $dni = $_GET[‘dni’];
    else
        $dni = “”;
    if (isset($_GET[‘nom’])
        $nom = $_GET[‘nom’];
    else
        $nom = “”;
?>

la funció isset() ens permet veure si està declarada. D’aquesta manera podem llegir de l’array de la variable superglobal $_GET.

Generar codi javascript dinàmic

Tenir codi javascript a una pàgina web simplement cal inserir-ho tant a dins de les etiquestes com

1
2
3
4
5
<BODY>
    <script>
        var numero = 5;
    </script>
</BODY>

El que podem fer amb PHP és dinamitzar aquest valor assignat amb una variable PHP

1
2
3
4
5
6
7
8
<BODY>
    <?php
        $numero = 33;
    ?>
    <script>
        var numero = <?php echo $numero; ?>;
    </script>
</BODY>

Fixeu-vos que a l’interpretrar la pàgina .php generarà el codi web següent

1
2
3
4
5
<BODY>
    <script>
        var numero = 33;
    </script>
</BODY>

Fixeu-vos també com tenim dos ; a la mateixa línia, el primer ; és del codi PHP i el segon del codi javascript.

També podeu observar com els identificadors de les dues variables és el mateix, però no passa res, ja que l’espai de memòria que usen és en dos llocs diferents. La variable de PHP es processa al servidor i la variable javascript es processa al navegador del client.

Tingueu present que el fer la petició de la pàgina web .php s’interpreta el codi PHP una vegada al servidor i llavors envia el codi generat dinàmicament al client i aquí el javascript donarà dinamisme a la interfície, podent canviar el valor d’aquesta variable numero en una altra part del codi.

Com usar fitxers includes

Un pas més en la estructuració del codi és usar diferents arxius per agrupar la lògica desenvolupada.

Aquest concepte el podem aplicar a diversos usos:

  • Agrupació de funcions que usarem en les diverses pàgines PHP
  • Compartir un model de dades amb les mateixes variables amb valors predefinits. (Ull, no confondre amb variables de sessió)

Per fer-ho usarem els includes a inici del fitxer PHP. El que es fa és llegir tot el contingut del fitxer a incloure i es copia literalment al fitxer. Per tant el codi de l’arxiu include en forma part.

Tenim un parell de opcions a implementar:

  • Include: si el fitxer no existeix o no hi té accés, genera un warning, no s’atura.
  • Require: si el fitxer no existeix o no hi té accés, genera una errada i s’atura.

Per incloure un arxiu ho posem a l’inici del codi PHP

<?php
    include “ruta/arxiu.php”;

    ...
?>

El fitxer a incloure ha de contenir també les etiquetes PHP

<?php
    echo “Benvinguts al programa X”;
?>

De manera pràctica podem usar els includes per afegir:

  • conjunt de variables o constants amb valors per defecte. (No confondre amb variables de sessió)
  • conjunt de funcions compartides entre diferents pàgines
  • generació dinàmica de contingut web, per exemple estils.

Usar un array per desar dades compostes d’una entitat. Per exemple ‘alumne’

Per fer aquest cas, el que farem serà usar un array associatiu amb les dades dels alumnes que es volen desar. Volem desar DNI, nom i població:

$alumne = array(“dni”=>”40111222X”,”nom”=>”Jordi Bosch”,”poblacio”=>”Girona”);

Ara si volem mostrar el nom de l’alumnes, fariem:

echo $alumne[‘nom’];

Si volem desar un conjunt d’alumnes el que podem fer és crear un array de doble nivell:

$alumnes = array (
    array(“dni”=>”40111222X”,”nom”=>”Jordi Bosch”,”poblacio”=>”Girona”),
    array(“dni”=>”40333444A”,”nom”=>”Judit Soler”,”poblacio”=>”Salt”),
    array(“dni”=>”40555666F”,”nom”=>”Maria Pla”,”poblacio”=>”Sils”)
);

on a cada posició de l’array, posem les dades d’un alumne. Aquesta primera opció ho fa per posicions, per tant per accedir a l’alumne de la posició 1, fariem:

echo $alumnes[1][‘nom’];

escriuria Judit Soler

Si el que volem és accedir a les dades de l’alumne per un índex associatiu el que cal fer és indexar l’array de cada alumne:

$alumnes = array (
    “40111222X” => array(“dni”=>”40111222X”,”nom”=>”Jordi Bosch”,”poblacio”=>”Girona”),
    “40333444A” => array(“dni”=>”40333444A”,”nom”=>”Judit Soler”,”poblacio”=>”Salt”),
    “40555666F” => array(“dni”=>”40555666F”,”nom”=>”Maria Pla”,”poblacio”=>”Sils”)
);

Per tant, ara podriem fer:

echo $alumnes[‘40555666F’][‘nom’];

i escriuria Maria Pla

Usar un array per idiomes interfície

Crear un array de 2 nivells de l’estil

$texts = array(
    “català” => array(“títol” => “Llibreria petita”, “Població”=> “Girona”),
“castellà” => array(“títol” => “Libreria pequeña”, “Població”=> “Gerona”)
);

definim

$idioma = “català”;
echo $texts[$idioma][‘títol’] . “ de “ . $texts[$idioma][‘Població’];

escriuria

Llibreria Petita de Girona

si definim

$idioma = “castellà”;
echo $texts[$idioma][‘títol’] . “ de “ . $texts[$idioma][‘Població’];

escriuria

Libreria pequeña de Gerona

Com recorrem els valors d’un array associatiu?

Per fer-ho farem ús del foreach, on podrem definir la tupla clau=>valor

De les dades:

$alumnes = array (
    “40111222X” => array(“dni”=>”40111222X”,”nom”=>”Jordi Bosch”,”poblacio”=>”Girona”),
    “40333444A” => array(“dni”=>”40333444A”,”nom”=>”Judit Soler”,”poblacio”=>”Salt”),
    “40555666F” => array(“dni”=>”40555666F”,”nom”=>”Maria Pla”,”poblacio”=>”Sils”)
);

Fariem

<?php
    foreach($alumnes as $clau=>$alumne)
    {
        echo “<BR>Dades de l’alumne: “ . $clau;
        echo “<BR>DNI: “ . $alumne[‘dni’];
        echo “<BR>Nom: “ . $alumne[‘nom’];
        echo “<BR>Població: “ . $alumne[‘poblacio’];
    }
?>

D’aquesta manera no ens cal saber les posicions de les dades per mostrar-les totes.

Dividir un string a valors d’un array

Ho farem amb la funció explode. On indicarem quin és l’element de divisió de l’sting

$string = “Hola, bon dia!”;
$dades = explode(“,”,$string);

Ens retorna un array amb l’string separat per la ,.

$dades[0] -> “Hola”
$dades[1] -> “bon dia!”

Generar un string amb valors d’un array

De manera inversa podem generar un string a partir dels valors d’un array amb implode

$dades = array(“audi”,”bmw”,”citroen”);
$string = implode(“,”,$dades);
echo “Marques: “ . $string;

Faria

Marques: audi,bmw,citroen

Això pot ser molt útil per moure dades d’arrays entre sistemes en format text.