29
Jérôme CUTRONA Jérôme CUTRONA [email protected] [email protected] 02:58:19 02:58:19 Programmation Web 2013-2014 Programmation Web 2013-2014 1 PHP PHP Interface base de Interface base de données données

PHP Interface base de données

  • Upload
    freira

  • View
    42

  • Download
    0

Embed Size (px)

DESCRIPTION

PHP Interface base de données. Problème de conception posé. Transcription d'un MCD en modèle objet PHP permettant de manipuler la base de données Règles de transcription : Une entité (attributs) devient une classe (attributs) Un enregistrement correspond donc une instance DF / CIF - PowerPoint PPT Presentation

Citation preview

Page 1: PHP Interface base de données

Jérôme CUTRONAJérôme CUTRONA

[email protected]@univ-reims.fr

19:40:1919:40:19 Programmation Web 2013-2014Programmation Web 2013-2014 11

PHPPHPInterface base de donnéesInterface base de données

Page 2: PHP Interface base de données

2219:40:1919:40:19 Programmation Web 2013-2014Programmation Web 2013-2014

Problème de conception poséProblème de conception posé

Transcription d'un MCD en modèle objet PHP Transcription d'un MCD en modèle objet PHP permettant de manipuler la base de donnéespermettant de manipuler la base de données

Règles de transcription :Règles de transcription : Une entité (attributs) devient une classe (attributs)Une entité (attributs) devient une classe (attributs)

Un enregistrement correspond donc une instanceUn enregistrement correspond donc une instance DF / CIFDF / CIF Associations n,mAssociations n,m

Page 3: PHP Interface base de données

3319:40:1919:40:19 Programmation Web 2013-2014Programmation Web 2013-2014

MCD MCD modèle objet : Entité modèle objet : Entité

MCDMCD Modèle objetModèle objet

<?php<?phpclassclass Auteur Auteur {{ privateprivate $$autidautid ; ; privateprivate $$autnomautnom ; ; privateprivate $$autprnautprn ; ; privateprivate $$autnaissautnaiss ; ; privateprivate $$autadrautadr ; ; privateprivate $$autcommautcomm ; ; privateprivate $$autloginautlogin ; ; privateprivate $$autpasswdautpasswd ; ; privateprivate $$autadminautadmin ; ; privateprivate $$autmailautmail ; ;}}?>?>

AuteurAuteur

AUTIDAUTID    int(11)int(11)AUTNOM  AUTNOM  varchar(50)varchar(50)AUTPRN  AUTPRN  varchar(50)varchar(50)AUTNAISS  AUTNAISS  int(11)int(11)AUTADR  AUTADR  varchar(255)varchar(255)AUTCOMM  AUTCOMM  varchar(255)varchar(255)AUTLOGIN  AUTLOGIN  varchar(50)varchar(50)AUTPASSWD  AUTPASSWD  varchar(50)varchar(50)AUTADMIN  AUTADMIN  smallint(6)smallint(6)AUTMAIL  AUTMAIL  varchar(150)varchar(150)

Page 4: PHP Interface base de données

4419:40:1919:40:19 Programmation Web 2013-2014Programmation Web 2013-2014

MCD MCD modèle objet : DF / CIF modèle objet : DF / CIF

MCDMCD Modèle objetModèle objet<?php<?phpclassclass Departement Departement {{ privateprivate $$depiddepid ; ; privateprivate $$depnomdepnom ; ; privateprivate $$regidregid ; ; privateprivate $$regionregion ; ;

functionfunction getRegion getRegion() …() …}}

classclass Region Region {{ privateprivate $$regidregid ; ; privateprivate $$regnomregnom ; ;

functionfunction getDepartements getDepartements() …() …}}?>?>

DépartementDépartement

DEPIDDEPID    int(11)int(11)DEPNOM  DEPNOM  varchar(50)varchar(50)

RégionRégion

REGIDREGID    int(11)int(11)REGNOM  REGNOM  varchar(50)varchar(50)

AppartenirAppartenir

1,11,1

1,n1,n

Page 5: PHP Interface base de données

5519:40:1919:40:19 Programmation Web 2013-2014Programmation Web 2013-2014

MCD MCD modèle objet : Association n,m modèle objet : Association n,m

MCDMCD Modèle objetModèle objet<?php<?phpclassclass Camping Camping {{ privateprivate $$cmpidcmpid ; ; privateprivate $$cmpnomcmpnom ; ; functionfunction getEmplacements getEmplacements() …() … functionfunction getTypePlaces getTypePlaces() …() …}}classclass Emplacements Emplacements {{ privateprivate $$nbPlacesnbPlaces ; ; privateprivate $$cmpidcmpid ; ; privateprivate $$tplidtplid ; ; privateprivate $$campingcamping ; ; privateprivate $$typeplacetypeplace ; ; functionfunction getCamping getCamping() …() … functionfunction getTypePlace getTypePlace() …() …}}......

TypePlaceTypePlace

TPLIDTPLID    int(11)int(11)TPLNOM  TPLNOM  varchar(50)varchar(50)

EmplacementsEmplacementsnbPlacesnbPlaces

1,n1,n

0,n0,n

CampingCamping

CMPIDCMPID    int(11)int(11)CMPNOM  CMPNOM  varchar(50)varchar(50)

Page 6: PHP Interface base de données

6619:40:1919:40:19 Programmation Web 2013-2014Programmation Web 2013-2014

MCD MCD modèle objet : Association n,m modèle objet : Association n,m

MCDMCD Modèle objetModèle objet

......classclass TypePlace TypePlace {{ privateprivate $$tplidtplid ; ; privateprivate $$tplnomtplnom ; ; functionfunction getCampings getCampings() …() … functionfunction getEmplacements getEmplacements() …() …}}?>?>

TypePlaceTypePlace

TPLIDTPLID    int(11)int(11)TPLNOM  TPLNOM  varchar(50)varchar(50)

EmplacementsEmplacementsnbPlacesnbPlaces

1,n1,n

0,n0,n

CampingCamping

CMPIDCMPID    int(11)int(11)CMPNOM  CMPNOM  varchar(50)varchar(50)

Page 7: PHP Interface base de données

7719:40:1919:40:19 Programmation Web 2013-2014Programmation Web 2013-2014

Problème de conception poséProblème de conception posé

Table AuteurTable Auteur

AUTIDAUTID    int(11)int(11)AUTNOM  AUTNOM  varchar(50)varchar(50)AUTPRN  AUTPRN  varchar(50)varchar(50)AUTNAISS  AUTNAISS  int(11)int(11)AUTADR  AUTADR  varchar(255)varchar(255)AUTCOMM  AUTCOMM  varchar(255)varchar(255)AUTLOGIN  AUTLOGIN  varchar(50)varchar(50)AUTPASSWD  AUTPASSWD  varchar(50)varchar(50)AUTADMIN  AUTADMIN  smallint(6)smallint(6)AUTMAIL  AUTMAIL  varchar(150)varchar(150)

<?php<?phpclassclass Auteur Auteur {{ privateprivate $$autidautid ; ; privateprivate $$autnomautnom ; ; privateprivate $$autprnautprn ; ; privateprivate $$autnaissautnaiss ; ; privateprivate $$autadrautadr ; ; privateprivate $$autcommautcomm ; ; privateprivate $$autloginautlogin ; ; privateprivate $$autpasswdautpasswd ; ; privateprivate $$autadminautadmin ; ; privateprivate $$autmailautmail ; ; publicpublic functionfunction __construct __construct((......)) …… publicpublic functionfunction lecture lecture(($$idid)) …… publicpublic functionfunction ecriture ecriture()() ……}}?>?>

Page 8: PHP Interface base de données

8819:40:1919:40:19 Programmation Web 2013-2014Programmation Web 2013-2014

Problème de conception poséProblème de conception posé<?php<?phpclassclass Personne Personne {{ privateprivate $$persidpersid ; ; privateprivate $$grpnumgrpnum ; ; privateprivate $$persnompersnom ; ; privateprivate $$persprnmpersprnm ; ; privateprivate $$persadpersad ; ; privateprivate $$perscpperscp ; ; privateprivate $$persvillepersville ; ; privateprivate $$perstelperstel ; ; privateprivate $$persmailpersmail ; ; privateprivate $$persetatpersetat ; ; publicpublic functionfunction __construct __construct((......)) …… publicpublic functionfunction lecture lecture(($$idid)) …… publicpublic functionfunction ecriture ecriture()() ……}}?>?>

Table PersonneTable Personne

  PERSIDPERSID    int(11)int(11)

  GRPNUM  GRPNUM  int(11)int(11)

  PERSNOM  PERSNOM  varchar(50)varchar(50)

  PERSPRNM  PERSPRNM  varchar(50)varchar(50)

  PERSAD  PERSAD  varchar(100varchar(100))

  PERSCP  PERSCP  varchar(5)varchar(5)

  PERSVILLE  PERSVILLE  varchar(50)varchar(50)

  PERSTEL  PERSTEL  varchar(10)varchar(10)

  PERSMAIL  PERSMAIL  varchar(100varchar(100))

  PERSETAT  PERSETAT  varchar(20)varchar(20)

Page 9: PHP Interface base de données

9919:40:1919:40:19 Programmation Web 2013-2014Programmation Web 2013-2014

Approche proposéeApproche proposée

Créer un Créer un modèle des objetsmodèle des objets "ligne BD" "ligne BD" Doivent pouvoir gérer un enregistrement :Doivent pouvoir gérer un enregistrement :

les les valeursvaleurs et leurs et leurs étiquettesétiquettes gestion des gestion des entrées / sorties avec la BDentrées / sorties avec la BD : :

lecture / insertion / mise à jourlecture / insertion / mise à jour accès aux valeursaccès aux valeurs de façon sure de façon sure modification des valeursmodification des valeurs de façon sure de façon sure affichageaffichage production de production de formulaireformulaire d'insertion / modification d'insertion / modification chargementchargement à partir de donnéesà partir de données issues d'un issues d'un

formulaire / de la lecture de la base de donnéesformulaire / de la lecture de la base de données

Page 10: PHP Interface base de données

101019:40:1919:40:19 Programmation Web 2013-2014Programmation Web 2013-2014

Conception du modèleConception du modèle

Classe ?Classe ? attributsattributs méthodes concrètesméthodes concrètes pas de méthodes "obligatoires"pas de méthodes "obligatoires"

Classe abstraite ?Classe abstraite ? attributsattributs méthodes concrètesméthodes concrètes méthodes abstraites "obligatoires"méthodes abstraites "obligatoires"

Interface ?Interface ? méthodes "obligatoires"méthodes "obligatoires"

Page 11: PHP Interface base de données

111119:40:1919:40:19 Programmation Web 2013-2014Programmation Web 2013-2014

Gestion des attributs (1)Gestion des attributs (1)

Solution classique :Solution classique : ajout de ajout de données membresdonnées membres dans la dans la classe concernéeclasse concernée impossibilitéimpossibilité d'écrire des d'écrire des méthodes génériquesméthodes génériques à un à un

niveau supérieur de la hiérarchieniveau supérieur de la hiérarchie gestion des gestion des étiquettesétiquettes associées aux valeurs associées aux valeurs ??

Approche proposée :Approche proposée : tableau associatiftableau associatif des des valeurs d’une ligne d’une tablevaleurs d’une ligne d’une table

confinementconfinement, , itérationitération, , accèsaccès facilitéfacilité possibilité d'écrire des possibilité d'écrire des méthodes génériquesméthodes génériques tableau associatif tableau associatif des des étiquettes étiquettes associées aux associées aux

valeursvaleurs méthode d'méthode d'initialisation du tableau des valeursinitialisation du tableau des valeurs

Page 12: PHP Interface base de données

121219:40:1919:40:19 Programmation Web 2013-2014Programmation Web 2013-2014

Conception du modèleConception du modèle

Classe ?Classe ? attributsattributs méthodes concrètesméthodes concrètes pas de méthodes "obligatoires"pas de méthodes "obligatoires"

Classe abstraite ?Classe abstraite ? attributsattributs méthodes concrètesméthodes concrètes méthodes abstraites "obligatoires"méthodes abstraites "obligatoires"

Interface ?Interface ? méthodes "obligatoires"méthodes "obligatoires"

Page 13: PHP Interface base de données

131319:40:2019:40:20 Programmation Web 2013-2014Programmation Web 2013-2014

Constitution d'une Constitution d'une classe génériqueclasse générique : : tableau associatiftableau associatif des des valeursvaleurs

ClésClés = noms des champs de la table= noms des champs de la table ValeursValeurs = valeurs d'une ligne de la table= valeurs d'une ligne de la table

Approche proposéeApproche proposée

class Auteurclass Auteurextendsextends

EnregistrementEnregistrement

AuteurAuteur

EnregistrementEnregistrement

__construct()__construct()initAttributsinitAttributs()()

EnregistrementEnregistrement

__construct()__construct()initAttributsinitAttributs()()

$$valeursvaleurs

cléclé valeurvaleur

$$valeursvaleurs

cléclé valeurvaleur

Création de l'objetCréation de l'objetInitialisation de l'objetInitialisation de l'objet

$$valeursvaleurs

cléclé valeurvaleur

''AUTIDAUTID'' nullnull

''AUTNOMAUTNOM'' nullnull

$$valeursvaleurs

cléclé valeurvaleur

''AUTIDAUTID'' 12341234

''AUTNOMAUTNOM'' ""ZolaZola""Lecture dans la BDLecture dans la BD

Page 14: PHP Interface base de données

141419:40:2019:40:20 Programmation Web 2013-2014Programmation Web 2013-2014

Gestion des attributs (2)Gestion des attributs (2)

classclass Enregistrement Enregistrement {{

// Attributs de l'enregistrement// Attributs de l'enregistrement

protectedprotected $$valeursvaleurs == arrayarray()() ;;

/* Initialisation des noms des champs/* Initialisation des noms des champs

qui sont les clés du tableau $valeurs */qui sont les clés du tableau $valeurs */

protectedprotected functionfunction initAttributs initAttributs((

$$_cles_cles /* Tableau des clés *//* Tableau des clés */) {) {

$$thisthis->->valeurs valeurs == arrayarray()() ;;

foreachforeach ((array_keysarray_keys(($$_cles_cles)) asas $$clecle))

$$thisthis->->valeursvaleurs[[$$clecle]] == nullnull ;;

}}

Page 15: PHP Interface base de données

151519:40:2019:40:20 Programmation Web 2013-2014Programmation Web 2013-2014

Solutions possibles :Solutions possibles :1.1. Accès R/W par Accès R/W par $$autaut->->valeursvaleurs[[''AUTIDAUTID'']]

2.2. Accès R par Accès R par $$aut-aut->>donnedonne((''AUTIDAUTID''))Accès W par Accès W par $$aut-aut->>affecteaffecte((''AUTIDAUTID', ', 1212))

3.3. Accès R/W par Accès R/W par $$aut-aut->>AUTIDAUTID

AuteurAuteur

Accès aux attributsAccès aux attributs

EnregistrementEnregistrement

__construct()__construct()initAttributsinitAttributs()()

$$valeursvaleurs

''AUTIDAUTID'' 12341234

''AUTNOMAUTNOM'' ""ZolaZola""

•Confinement Confinement •Itération possible Itération possible •Accès sûr Accès sûr ??•Accès simple Accès simple ??

$$valeursvaleurs doit être doit être publicpublic !!

Syntaxe assez lourdeSyntaxe assez lourdeSurcharge de Surcharge de __get()__get() et et __set()__set()

Page 16: PHP Interface base de données

161619:40:2019:40:20 Programmation Web 2013-2014Programmation Web 2013-2014

Gestion des attributs (3)Gestion des attributs (3)

/* Surcharge de /* Surcharge de __get__get pour donner accès aux pour donner accès aux valeurs sous la forme $e->un_champs */valeurs sous la forme $e->un_champs */

publicpublic functionfunction __get(__get(

$$_cle_cle /** Nom du champs *//** Nom du champs */)) {{

ifif ((array_key_existsarray_key_exists(($$_cle_cle,,

$$thisthis->->valeursvaleurs))))

returnreturn $$thisthis->->valeursvaleurs[[$$_cle_cle]] ;;

throwthrow newnew ExceptionException((

""Champs 'Champs '$$_cle_cle' inconnu dans '' inconnu dans '""

..get_classget_class(($$thisthis))..""''"")) ;;

}}

Page 17: PHP Interface base de données

171719:40:2019:40:20 Programmation Web 2013-2014Programmation Web 2013-2014

Gestion des attributs (4)Gestion des attributs (4)

/* Surcharge de /* Surcharge de __set__set pour donner accès aux pour donner accès aux valeurs sous la forme $e->un_champs=val */valeurs sous la forme $e->un_champs=val */

publicpublic functionfunction __set(__set(

$$_cle_cle /** Nom du champs *//** Nom du champs */,,

$$_val_val /** Nouvelle valeur *//** Nouvelle valeur */)) {{

ifif ((array_key_existsarray_key_exists(($$_cle_cle,,

$$thisthis->->valeursvaleurs))))

returnreturn $$thisthis->->valeursvaleurs[[$$_cle_cle]] == $$_val_val ;;

throwthrow newnew ExceptionException((

""Champs 'Champs '$$_cle_cle' inconnu dans '' inconnu dans '""

..get_classget_class(($$thisthis))..""''"")) ;;

}}

Page 18: PHP Interface base de données

181819:40:2019:40:20 Programmation Web 2013-2014Programmation Web 2013-2014

Gestion des étiquettesGestion des étiquettes

ValeursValeurs : : Tableau associatifTableau associatif au niveau de la classe mère au niveau de la classe mère Accès simple à l'aide de Accès simple à l'aide de __get__get et et __set__set Traitements au niveau de la classe mèreTraitements au niveau de la classe mère Méthode d'Méthode d'initialisationinitialisation initAttributsinitAttributs(($$_cles_cles) )

ÉtiquettesÉtiquettes : : Tableau associatifTableau associatif Propriété de la classe mère Propriété de la classe mère ?? Communes à toutes les entités d'une classe dérivéeCommunes à toutes les entités d'une classe dérivée

Attribut statiqueAttribut statique de la classe dérivée de la classe dérivée

Méthode abstraite Méthode abstraite etiquettes()etiquettes() (classe mère)(classe mère)

Utilisable pour l'Utilisable pour l'initialisation des attributsinitialisation des attributs

Page 19: PHP Interface base de données

191919:40:2019:40:20 Programmation Web 2013-2014Programmation Web 2013-2014

Conception du modèleConception du modèle

Classe ?Classe ? attributsattributs méthodes concrètesméthodes concrètes pas de méthodes "obligatoires"pas de méthodes "obligatoires"

Classe abstraite ?Classe abstraite ? attributsattributs méthodes concrètesméthodes concrètes méthodes abstraites "obligatoires"méthodes abstraites "obligatoires"

Interface ?Interface ? méthodes "obligatoires"méthodes "obligatoires"

Page 20: PHP Interface base de données

202019:40:2019:40:20 Programmation Web 2013-2014Programmation Web 2013-2014

Définition des méthodes (1)Définition des méthodes (1)

Chargement de données :Chargement de données : à partir de à partir de donnéesdonnées issues d'un issues d'un formulaireformulaire (tableau) (tableau) à partir de la à partir de la lecturelecture de la de la base de donnéesbase de données (tableau) (tableau)

possible si les possible si les clésclés de ces tableaux sont de ces tableaux sont identiquesidentiques à à celles du tableau des valeurscelles du tableau des valeurs

démarche : démarche : pour chaque clépour chaque clé du tableau des valeurs, du tableau des valeurs, sisi cette dernière est cette dernière est présenteprésente dans le tableau des dans le tableau des données fournies alors données fournies alors affecteraffecter la valeur fournie la valeur fournie

implémentationimplémentation possible dans la possible dans la classe mèreclasse mère

Page 21: PHP Interface base de données

212119:40:2019:40:20 Programmation Web 2013-2014Programmation Web 2013-2014

Définition des méthodes (2)Définition des méthodes (2)

Lecture BD nécessiteLecture BD nécessite : : de connaître la de connaître la tabletable de connaître la de connaître la clé primaireclé primaire de de transférertransférer les données lues dans les valeurs les données lues dans les valeurs

Écriture BD nécessiteÉcriture BD nécessite : : de connaître la de connaître la tabletable de connaître la de connaître la clé primaireclé primaire de savoir si l'on doit de savoir si l'on doit insérerinsérer ouou mettre à jourmettre à jour la table la table

lecture préalable lecture préalable de disposer des valeursde disposer des valeurs

Page 22: PHP Interface base de données

222219:40:2019:40:20 Programmation Web 2013-2014Programmation Web 2013-2014

Définition des méthodes (3)Définition des méthodes (3)

Connaître la tableConnaître la table : : Donnée des classes dérivéesDonnée des classes dérivées A la charge des classes dérivéesA la charge des classes dérivées Obligation d'implémentationObligation d'implémentation

méthode abstraite méthode abstraite table()table() de la classe mère de la classe mère

Connaître la clé primaireConnaître la clé primaire : : Donnée des classes dérivéesDonnée des classes dérivées A la charge des classes dérivéesA la charge des classes dérivées Obligation d'implémentationObligation d'implémentation

méthode abstraite méthode abstraite cle_pri()cle_pri() de la classe mère de la classe mère

Page 23: PHP Interface base de données

232319:40:2019:40:20 Programmation Web 2013-2014Programmation Web 2013-2014

Bilan (partiel) des méthodesBilan (partiel) des méthodes

class Auteurclass Auteurextendsextends

EnregistrementEnregistrement

AuteurAuteur

EnregistrementEnregistrementtabletable()()""AuteurAuteur""cle_pricle_pri()()""AUTIDAUTID""etiquettesetiquettes()()……

__construct()__construct()initAttributsinitAttributs()()

lecturelecture()()ecritureecriture()()

$$valeursvaleurs

''AUTIDAUTID'' 12341234

''AUTNOMAUTNOM'' ""ZolaZola""

EnregistrementEnregistrementtabletable()()

cle_pricle_pri()()etiquettesetiquettes()()

__construct()__construct()initAttributsinitAttributs()()

lecturelecture()()ecritureecriture()()

$$valeursvaleurs

cléclé valeurvaleur

Page 24: PHP Interface base de données

242419:40:2019:40:20 Programmation Web 2013-2014Programmation Web 2013-2014

Définition des méthodes (4)Définition des méthodes (4)

LectureLecture : : table / clé primaire connuestable / clé primaire connues SELECT * FROM SELECT * FROM tabletable WHERE WHERE clé_priclé_pri==idid ChargementChargement

ÉcritureÉcriture : : table / clé primaire connuestable / clé primaire connues Si Si idid existe dans la base existe dans la base mise à jour mise à jour SELECT COUNT(*) FROM SELECT COUNT(*) FROM tabletable WHERE WHERE clé_priclé_pri==idid == 1 == 1 UPDATEUPDATE tabletable WHERE WHERE clé_priclé_pri==idid

Sinon Sinon insertion insertion SELECT COUNT(*) FROM SELECT COUNT(*) FROM tabletable WHERE WHERE clé_priclé_pri==idid == 0== 0 INSERTINSERT INTO INTO tabletable

Page 25: PHP Interface base de données

252519:40:2119:40:21 Programmation Web 2013-2014Programmation Web 2013-2014

Définition des méthodes (5)Définition des méthodes (5)

Affichage Affichage :: Peut être fait de façon Peut être fait de façon génériquegénérique grâce au grâce au parcoursparcours

des des attributsattributs etet étiquettesétiquettes Serait plus judicieux d'être Serait plus judicieux d'être spécialiséspécialisé par les classes par les classes

dérivéesdérivées

Production de formulaire Production de formulaire :: Éléments de formulaireÉléments de formulaire et non formulaire complet et non formulaire complet Peut être fait de façon Peut être fait de façon génériquegénérique grâce au grâce au parcoursparcours

des des attributs et étiquettesattributs et étiquettes Serait plus judicieux d'être Serait plus judicieux d'être spécialiséspécialisé par les classes par les classes

dérivéesdérivées

Page 26: PHP Interface base de données

262619:40:2119:40:21 Programmation Web 2013-2014Programmation Web 2013-2014

Bilan (1)Bilan (1)

abstractabstract classclass Enregistrement Enregistrement {{

protectedprotected $$valeursvaleurs == arrayarray()() ;;

abstractabstract publicpublic functionfunction __construct(__construct($$_id_id==nullnull) ) ;;

protectedprotected functionfunction initAttributs initAttributs(($$_cles_cles) { … }) { … }

abstractabstract protectedprotected functionfunction table table() () ;;

abstractabstract protectedprotected functionfunction cle_pri cle_pri()() ;;

abstractabstract public public functionfunction etiquettes etiquettes()() ;;

publicpublic functionfunction etiquette etiquette(($$_cle_cle)) { … }{ … }

publicpublic functionfunction lecture lecture(($$_id_id)) { … }{ … }

publicpublic functionfunction ecriture ecriture() { … } () { … }

publicpublic functionfunction chargement chargement(($$_donnees_donnees)) { … }{ … }

publicpublic functionfunction affichage affichage()() { … }{ … }

publicpublic functionfunction formulaire formulaire() { … }() { … }

Page 27: PHP Interface base de données

272719:40:2119:40:21 Programmation Web 2013-2014Programmation Web 2013-2014

Bilan (2)Bilan (2)

publicpublic functionfunction __get(__get($$_cle_cle) { … }) { … }

publicpublic functionfunction __set(__set($$_cle_cle, , $$_val_val) { … }) { … }

publicpublic functionfunction __isset(__isset($$_cle_cle) { … }) { … }

publicpublic functionfunction __unset(__unset($$_cle_cle)) { … }{ … }

} } // Fin class Enregistrement // Fin class Enregistrement

classclass Etendue Etendue extendsextends Enregistrement Enregistrement {{

constconst table table == " "la_tablela_table" " ;;

constconst cle_pri cle_pri == " "LA_CLE_PRILA_CLE_PRI" " ;;

staticstatic privateprivate $$labelslabels

== arrayarray((''XXXXXXXXXX' ' =>=> ' 'Etiquette XEtiquette X', ...', ...)) ;;

publicpublic functionfunction __construct(__construct($$_id_id==nullnull)) {{

$$thisthis->->initAttributsinitAttributs((selfself::$::$labelslabels)) ;;

ifif (isset((isset($$_id_id))))

$$thisthis->->lecturelecture(($$_id_id)) ; ; }}

Page 28: PHP Interface base de données

282819:40:2119:40:21 Programmation Web 2013-2014Programmation Web 2013-2014

Bilan (3)Bilan (3)

protectedprotected functionfunction table table()() {{

returnreturn selfself::::table table ;;

}}

protectedprotected functionfunction cle_pri cle_pri()() {{

returnreturn selfself::::cle_pri cle_pri ;;

}}

protectedprotected functionfunction etiquettes etiquettes()() {{

returnreturn selfself::$::$labelslabels ;;

}}

publicpublic functionfunction affichage affichage()() { { // ...// ...

}}

publicpublic functionfunction formulaire formulaire()() {{ // ... // ...

}}

} } // Fin class Etendue// Fin class Etendue

Page 29: PHP Interface base de données

292919:40:2119:40:21 Programmation Web 2013-2014Programmation Web 2013-2014

Implémentations plus élaboréesImplémentations plus élaborées

Requête d'informationRequête d'information

Liste des champsListe des champs

Nature des champsNature des champs

Type de cléType de clé