Mysql is fucking dead

Recentment, llegint el manual en línia de PHP, vaig llegir que es recomana deixar d’utilitzar l’extensió Mysql en el desenvolupament de noves aplicacions web. Enlloc seu, es recomana fer servir l’extensió Mysqli, que es pot utilitzar de manera procedural (és a dir, de la mateixa manera que Mysql) o orientada a objectes.

Imagino que és qüestió de temps que l’extensió Mysql passi de ser no recomanada a estar desfasada, així que és important anar-se familiaritzant amb Mysqli. Aquí sota poso un simple exemple de com crear una funció per connectar-se a una base de dades i imprimir el contingut d’una taula. Disculpeu que estigui tot en anglès, és el costum!

Imprimir un array multidimensional amb una de les dimensions generada dinàmicament

A voltes pot ser necessari que les dimensions d’un array multidimensional es puguin generar dinàmicament, o que les poguem filtar en base a algun criteri. Per exemple: en un web en el qual donem importància al gènere de l’usuari, seria necessari tenir els missatges en les corresponents variants masculina i femenina, així com disposar d’una manera eficaç i neta d’impirmir una o altra variant en funció de l’usuari.

Per tal de fer-ho, podem tenir els missatges en un array multidimensional com aquest:

Ara, per imprimir la salutació a l’usuari, tan sols ens caldria fer crides com les següents, que ens retornarien les salutacions corresponents:

L’objectiu

El nostre objectiu és que quan volguem saludar a l’usuari amb un «Hola!» no ens calgui especificar-ne el gènere, ja que això podria ser una informació que tenim emmagatzemada i que, per tant, podem utilitzar. I no volem estar duplicant codi en va, oi?

Les funcions

En primer lloc, necessitem una funció saluda() que s’encarregui de valorar quina salutació requereix l’usuari, en base a la informació que en tenim. Una com aquesta:

Si la revisem línia a línia, aquesta funció fa el següent:

  1. Rep la variable $saluda, que per defecte valorem com a false per evitar que la funció ens retorni continguts sense haver-li passat un argument
  2. Inclou l’array $salutacions amb les salutacions
  3. Inclou la variable $current_user, en la qual hi tenim emmagatzemada tota la informació de l’usuari
  4. Evalua si l’usuari és homa o dona, i ens retorna el valor corresponent per a la variable gender.
  5. Finalment, ens retorna la salutació que necessitem

Gràcies a la la informació de l’usuari que tenim emmagatzemada a la variable current_user, podem especificar si és home o dona amb aquestes dues funcions:

Un plat apart

No puc entrar a valorar tots els detalls, i està fora de la intenció d’aquest article discutir com gestionar la informació d’un usuari que tenim a una base de dades, però cal tenir en compte que la variable $current_user està desada en una sessió, i que és un array associatiu amb tota la informació de l’usuari provinent de la base de dades. Tot i que no la comentaré, aquesta és la funció que ho fa possible:

També us cal saber, tot i que ja ho haureu endevinat, que tenim el gènere de l’usuari guardat a la columna gender, amb els valors «M» si és home, i «F» si és dona, i que en disposem així:

Ja quasi ho tenim

Arribats ací, ja quasi ho tenim. Ara tan sols ens falta associar el valor retornat per la funció saluda() a una variable, i fer un condicional que la imprimexi quan tingui un valor retornat.

Per últim, ja tan sols ens cal dir quina salutació volem enviar a l’usuari. Ho farem definint la variable $salutacio amb una de les salutacions que teniem a l’array $salutacions. Així:

Ara, la funció saluda() rebrà l’argument $saluda, que enclou el valor “hola”, i ens retornarà la variable multidimensional que necessitem. En altres paraules, ens retornarà:

Era un gat, era un gos…

Amb aquest petit joc de funcions hem acomseguit que les salutacions que volem enviar a l’usuari estiguin en masculí o femení en base a la informació que en tenim a la base de dades. Amb això haurem reduït considerablement el codi a les nostres pàgines, ja que tan sols ens cal especificar quina salutació colem (un “hola” o un “adéu”), però les evaluacions necessàries per a imprimir una salutació adequada queden en mans de tres petites funcions.