![]() |
|
|||
![]() |
Un món classificat | |
La percepció que tenim del món ve marcada per
la classificació que fem dels elements que hi trobem. Així
sabem que en el món hi ha milions d’arbres i, en lloc de designar-los
individualment, el que fem és reconèixer-los de manera global
donades les característiques que sabem que tenen. Si viatgem a un
país exòtic i trobem una mena d’arbre que no haguem
vist mai, no tindrem cap dubte en afirmar que allò és un arbre.
Tenim una mena de “plantilla” mental que inclou les característiques
i el que podem esperar d’unes coses que creixen de la terra, que tenen
un tronc, que tenen unes branques i que tenen unes fulles; i sabem que d’això
en diem “arbre”. Si, en canvi, allò que veiem no té
un tronc sinó una tija, té pètals i colors més
o menys vius i no té una alçada gaire considerable, sense
dubtes direm que és una “flor”.
El mateix passa amb aquelles coses que ha creat l’home: tots som capaços de distingir una taula d’una cadira, encara que tinguin algunes coses en comú. Les taules poden tenir unes dimensions, un nombre de potes, pot ser plegable, etc., però la percebem com a això: una taula. Un altre exemple d’objecte més complicat podria ser el d’un cotxe: té unes dimensions, una forma, un color, un tipus de motor, etc. I amb un cotxe podem fer coses diferents: girar, tocar el clàxon, accelerar, anar marxa enrere, etc. Cada arbre, cada taula, cada cotxe és un element individual que comparteix característiques amb les altres individualitats. Dels conjunts d’elements en podríem dir “classes” i de cada individualitat podríem dir que és un “objecte” |
|
Classes i objectes | |
Podem traspassar aquestes concepcions de què parlàvem, a la programació. Així trobem les classes i els objectes. Les classes seran una mena de “plantilla” que serveix per una finalitat concreta: crear xats, crear documents pdf, crear una calculadora, crear un formulari html, executar un fitxer d’àudio, etc. Salvant les distàncies estem parlant del mateix que els arbres, taules i cotxes de l’apartat anterior. I de la mateixa manera que en el cas del cotxe, per exemple, dins de cada classe hi haurà uns valors (variables o propietats) i possibilitats o coses que pot fer (funcions o mètodes). El PHP, tot i que no és pròpiament un llenguatge orientat a objectes, sí que recull també la possibilitat de treballar amb classes i objectes. Així, en php, cada classe tindrà unes variables (que es defineixen anteposant-hi var) i unes funcions internes que defineixen les possibilitats o mètodes que té la classe, és a dir, allò que la classe pot fer. Els objectes seran cadascuna de les unitats, dels elements nous, que creem a partir de la classe. Podem crear, per exemple, un objecte “calculadora1” a partir de la classe “calculadora”. O podem crear un objecte “formulari1” a partir de la classe “formulari”. I cada objecte o element individual tindrà uns valors que podran ser diferents (per exemple, en el cas del formulari podrien ser el color de fons o el nombre d’inputs). Una de les característiques de la programació orientada a objectes és la capacitat d'ampliar les caracterísitiques o possibilitats d'una classe mitjançant l'herència. Així, seguint l'exemple d'abans, a partir d'una classe que definís una calculadora, podríem fer-ne una ampliació cap a una nova classe que podria ser una "calculadora científica". Aquesta nova classe heretaria totes les característiques de l'anterior i, a més, n'ampliaria les possibilitats. |
|
Un exemple simple | |
Com a exemple, podem crear una classe molt simple que farà la feina de sumar dues xifres, definides ja dins de la classe. |
|
<? |
|
Com veieu, efectivament és molt simple i no té massa sentit pràctic, però es tracta només de veure el funcionament de la definició i ús de les classe i objectes. Un cop tenim definida la classe la podem utilitzar, creant objectes nous, tantes vegades com vulguem. El treball amb classes, comporta, d’una banda, una mica més de complicació en el codi; de l’altra aporta un avantatge: una vegada hem depurat la classe tenim la garantia que cada nou objecte funcionarà correctament i sense problemes. |
|
Les classes que utilitzem al D116 | |
Tota aquesta explicació, més que per aprofundir en les classes i objectes, ha de servir per entendre l’ús de les classes que apareixen en el curs i la seva sintaxi. No es tracta pas, doncs, de crear noves classes sinó de conèixer com les utilitzem. Seguidament en comentem algunes. | |
La classe phpmailer | |
Al mòdul 3, pràctica 2 es parla de la realització, de manera opcional, del procés de tramesa de correu mitjançant un formulari i la classe phpmailer. Tal com s'explica, aquesta classe ens permet enviar correu autentificant-nos en un servidor smtp. Iniciem un nou objecte que tindrà per nom $mail amb: |
|
$mail = new phpmailer(); | |
I a partir d'aquí es van definint les propietats o característiques que tindrà aquest nou objecte, per exemple: | |
$mail->Mailer = "smtp"; | |
indica que la connexió serà per mitjà d'un servidor smtp | |
O bé amb: |
|
$mail->Host = "smtp.xtec.cat"; | |
li indiquem quin és el nom (host) del servidor smtp | |
La biblioteca ADODB | |
En concret, en el mòdul 5 utilitzem la biblioteca ADODB que utilitza les classes. Com a curiositat, si observeu el fitxer adodb.inc.php veureu que hi ha definides les classes seguint la sintaxi que hem comentat en el nostre exemple anterior. Quan en el codi de les pràctiques definim, per exemple, al llistat 5.4.3: |
|
$pager1 = new ADODB_Pager($ConTut,$sql); | |
estem creant un nou objecte de paginació automàtica
de les dades, al qual li passem com a paràmetres la connexió
que ja tenim oberta (un objecte de la classe connexió) i una consulta. Després donem valors a algunes de les variables definides en la classe: |
|
... $pager1->linkSelectedColor = "red"; $pager1->htmlSpecialChars = True; ... |
|
Ja veieu que marquem la dependència amb ->. És a dir : | |
$objecte = new Classe; $objecte->variabledeclasse = algunacosa; $objecte->funciódeclasse(paràmetres); |
|
Finalment utilitzem una funció interna de la classe, Render(), que serveix per mostrar l’objecte de paginació en pantalla: | |
$pager1->Render($rows=4); | |
De la mateixa manera, quan establim una connexió a una base de dades, estem creant un objecte al qual, a les pràctiques, donem el nom de | |
$ConTut | |
Una de les coses que poden fer els “objectes” de connexió és executar consultes SQL mitjançant la funció Execute(). | |
$RS =$ConTut->Execute($sql)or DIE($ConTut->ErrorMsg()) ; | |
Amb això es crea un nou objecte Recordset ($RS) que tindrà noves possibilitats. Per exemple amb | |
$RS->Close(); | |
tancarem el recordset o resultat de la consulta. | |
Biblioteca FPDF | |
A la pràctica 3 del mòdul 7 utilitzem també una
classe per generar documents pdf: FPDF. El fitxer on hi ha definides les
classes s'anomena
fpdf.php. En aquest cas podríem generar un nou document que contingués únicament la frase “Hola a tothom!” de la següent manera: |
|
<?php |
|
A l'exemple del mòdul 7, a més, podeu veure com, partint de la classe definida, en creem una de nova. És a dir, que en podem fer una extensió per tal de fer-la més completa o més propera als nostres interessos: |
|
class PDF extends FPDF | |
D'aquesta manera creem una nova classe anomenada pdf que parteix de la definició de la classe original fpdf i a la qual li afegirem les característiques que ens interessin. | |
Una mica més d'informació | |
Podeu trobar moltes fonts d'informació per completar i ampliar el que hem explicat en aquesta introducció. Per posar-ne dos exemples:
|
|
On trobar classes? | |
Podeu veure i provar una gran quantitat de classes a internet, especialment a la pàgina http://www.phpclasses.org Hi podreu trobar una considerable quantitat i diversitat de classes classificades per temes. |
|
![]() |
|