![]() |
|
||||||||||||||||
![]() |
||||||||||||||||
Pràctica |
![]() |
Exercicis
|
||||||||||||||
Necessitat d'abstracció i modularitat | ||||||||||||||||
![]() |
En el procés de disseny d'un aplicatiu, s'observa que moltes de les tasques que es porten a terme són bastant repetitives, i les diferències només radiquen en valors parametritzables que s'envien a aquesta tasca. Altres vegades és necessari establir un únic protocol o model per accedir o modificar unes dades, des de diferents punts de l'aplicatiu, per assegurar la coherència i la integritat d'aquestes dades. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
L'objectiu d'aquesta pràctica és doble. En primer lloc,
heu de prendre consciència de la necessitat de definir una capa
d'abstracció per accedir a un gran ventall de base de dades (MySQL,
Acces, Oracle, Interbase, FoxPro, MsSQL...), i minimitzar els efectes
de qualsevol migració a un altre sistema, independentment del motor
de la base de dades que utilitzeu. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
En segon lloc, s'ha d'instal·lar i analitzar superficialment la llibreria ADODB com a eina per potenciar la portabilitat del programari. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Desenvolupament de la pràctica | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
Un dels aspectes més importants que s'ha de tenir
en compte quan es desenvolupa una aplicació web és la portabilitat
del programari en qualsevol plataforma i sistema de base de dades. Atès
el gran dinamisme de la WWW i la seva evolució contínua,
s'ha de prioritzar i assegurar la compatibilitat del vostre sistema amb
independència del sistema matriu on s'implementi. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
El PHP disposa de jocs d'instruccions natives no estandarditzades per
manipular bases de dades (tractades al mòdul 4 d'aquest curs);
això implica que si es varia el motor de la BD, s'han de reescriure
les funcions d'accés a la BD, i en conseqüència tornar
a verificar de nou el sistema per assegurar la fiabilitat de l'aplicatiu.
Cada base de dades té alguna particularitat que la diferencia de
les altres, o el tipus de dades que tracten no és uniforme. Fins
i tot, el PHP disposa de diferents API per a cada tipus de bases de dades. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Aquests inconvenients s'accentuen quan en un mateix aplicatiu s'ha d'accedir a diferents bases de dades; això significa que el programador utilitzarà diferents instruccions i protocols per accedir a cada una de les bases de dades, i es pot donar el cas que els tipus de dades retornats no siguin iguals, amb la conseqüent previsió de tractar aquestes dades abans de processar-les. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Figura 5.1.1. Diagrama d'accés a bases de dades |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
D'aquí neix la necessitat de crear un interfície que encapsuli totes aquestes diferències, per crear un conjunt d'instruccions i mètodes genèrics capaços d'interactuar amb qualsevol servidor de bases de dades. Aquests mètodes genèrics internament s'encarreguen de cridar l'API nativa de la BD corresponent, i és la capa d'abstracció la que assegura de relacionar el joc de mètodes genèrics amb la corresponent API d'aquella base de dades. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ADODB (Active Data Objects Database) |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
A més, aquesta capa d'abstracció també ha d'estandarditzar el tipus de dades que es manipulen, i assegurar internament la conversió al tipus de dades que suporta la BD, que pot ser diferent segons el motor amb què treballeu. Per exemple, el format del tipus 'data' no és igual per a totes les BD. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Figura 5.1.2. Diagrama d'accés a bases de dades a través d'una capa d'abstracció |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Hi ha diferents capes d'abstracció en PHP per a l'accés a bases de dades com, per exemple, PEAR DBI, Metabase i PHPLib, però una de les més esteses i eficients és l'ADODB (Active Data Objects Database), creada per John Lim. La web d'aquest projecte la podeu trobar a PHPLENS, a l'adreça http://phplens.com/phpeverywhere/. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
L'ADODB proporciona la capacitat d'abstracció, perquè el sistema de BD amb què treballeu és transparent al programador. En resum, encapsuleu les diferències. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
L'ADODB procura la portabilitat del vostre sistema a qualsevol base de dades comercial, o lliure, sense haver de modificar el codi. Es tracta d'una llibreria que incorpora una capa d'abstracció que permet interaccionar amb multitud de BD (bases de dades) sense tornar a reescriure el codi ja escrit. Aquesta llibreria està escrita en PHP. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
L'ADODB és una llibreria de classes de BD. Està força
optimitzada pel que fa a la velocitat (de l'ordre d'un 10 % més
que la llibreria més ràpida), i es consolida com una de
les més ràpides en l'entorn PHP (comparativa).
Actualment, s'han optimitzat encara més unes funcions del nucli
que poden ser crítiques quant a temps d'accés, i s'han implementat
amb el llenguatge de programació C. Els resultas són realment
optimistes, ja que permeten millores d'accés de l'ordre del 20
% al 30 %. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
L'ADODB permet accedir a una varietat de sistemes de BD molt extens: el MySQL, el PostgreSQL, l'ORACLE, l'Interbase, el Microsoft SQL Server, l'Acces, l'ODBC, i molts altres, i a més s'utilitza en projectes PHP de reconeguda fiabilitat i experiència: el PhpLens, el PostNuke, el Xaraya, el phpWiki, el Mambo, el PHP GACL, el Webodex... |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Connectivitat de la llibreria ADODB amb motors de bases de dades | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Figura 5.1.3. Connectivitat de l'ADODB |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
Aquestes dades es troben al fitxer readme.htm de la corresponent versió de l'ADODB que utilitzeu; és aconsellable que repasseu la informació de la llibreria ADODB que instal·leu. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Obtenció ADODB |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Podeu descarregar l'ADODB de l'adreça http://adodb.sourceforge.net/,
tant en format zip, com tgz, o podeu trobar-lo al CD amb el nom d'adodbxxx.zip.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Altres llocs alternatius: http://phplens.com/phpeverywhere/ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Podeu trobar també el fitxer utilitzat en el curs al paquet de materials de formació, al CD Eines o bé al servei CD-web de la XTEC. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Instal·lació de l'ADODB |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
Descomprimiu el fitxer en algun directori del servidor web que tingueu activat (observeu la figura 5.1.4). El ftxer per al Windows té extensió *.zip, i per al Linux *.tgz. Us heu d'assegurar que la versió del PHP que utilitzeu sigui la 4.0.5 o superior. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
Recordeu activar la funció de descomprimir mantenint les carpetes
originals. Això provoca una estructura que es munta a partir de
la carpeta adob_x.xx.x. És important descomprimir-la en
algun lloc que sigui accessible pel vostre servidor web, en el vostre
cas sobre el directori virtual que heu creat a l'exercici del mòdul
1. En cas que ho hàgiu d'instal·lar en altres sistemes en
què no heu instal·lat l'EasyPHP, les adreçes probables
podrien ser aquestes: |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
A l'apartat d'exercicis del mòdul 1 heu creat el directori virtual /d116/ (que apuntava al directori físic C:\Arxius de programa\EasyPHP1-7\www\prac_d116\); seria una bona opció penjar-lo a la carpeta física on apunta aquest directori virtual, així servirà per a la resta de pràctiques en què utilitzareu l'ADODB. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Us recomanem que renombreu el directori amb el nom d'adodb, així, si l'actualitzeu, sempre penjarà del mateix lloc, independentment de la versió que instal·leu. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Figura 5.1.4. Estructura de carpetes de directori virtual http://localhost /d116/ |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Entre els fitxers que podeu trobar a la carpeta adodb, destaquen els següents: | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Hi ha moltes altres llibreries i classes de manipulació d'errors, d'encriptació de dades, d'exportació de dades, etc. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Totes són prou extenses per desenvolupar diverses pràctiques amb cada una d'elles. Us centrareu en la llibreria principal de l'ADODB i en algunes opcions de visualització de dades. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Manuals de consulta d'ADODB : | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Existeix també una versió bastant recent anomenada ' ADODB Lite ' , basada amb el codi d' ADODB, però més lleugera d'espai i de consum de recursos en relació al servidor de bases de dades. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
![]() |
||||||||||
|
Exercicis |
|||||||||