Vous êtes sur la page 1sur 263

PHP

Développement Web et
programmation objet

PHP-PE
© m2iformation PHP-PE 1
Sommaire

PRÉSENTATION GÉNÉRALE P. 3

I. CONCEPT OBJET P. 6

II. PDO (PHP DATA OBJECT) P. 57

III. PHP ET XML P. 84

IV. SÉCURITÉ P. 111

V. CRÉER UN DOSSIER SÉCURISÉ P. 157

VI. DÉBOGAGE ET OPTIMISATION P. 172

VII. SERVICES W EB AVEC PHP5 P. 205

VIII.LE FRAMEWORK ZEND P. 233

© m2iformation PHP-PE 2
PRÉSENTATION GÉNÉRALE

© m2iformation PHP-PE 3
PRÉSENTATION GÉNÉRALE

© m2iformation PHP-PE 4
PRÉSENTATION GÉNÉRALE

© m2iformation PHP-PE 5
Concept objet

PHP-PE
© m2iformation PHP-PE 6
CONCEPT OBJET

© m2iformation PHP-PE 7
CONCEPT OBJET

© m2iformation PHP-PE 8
CONCEPT OBJET

© m2iformation PHP-PE 9
CONCEPT OBJET

© m2iformation PHP-PE 10
CONCEPT OBJET

© m2iformation PHP-PE 11
CONCEPT OBJET

© m2iformation PHP-PE 12
CONCEPT OBJET

© m2iformation PHP-PE 13
CONCEPT OBJET

© m2iformation PHP-PE 14
CONCEPT OBJET

© m2iformation PHP-PE 15
CONCEPT OBJET

© m2iformation PHP-PE 16
CONCEPT OBJET

© m2iformation PHP-PE 17
CONCEPT OBJET

© m2iformation PHP-PE 18
CONCEPT OBJET

© m2iformation PHP-PE 19
CONCEPT OBJET

© m2iformation PHP-PE 20
CONCEPT OBJET

© m2iformation PHP-PE 21
CONCEPT OBJET

© m2iformation PHP-PE 22
CONCEPT OBJET

© m2iformation PHP-PE 23
CONCEPT OBJET

© m2iformation PHP-PE 24
CONCEPT OBJET

© m2iformation PHP-PE 25
CONCEPT OBJET

© m2iformation PHP-PE 26
CONCEPT OBJET

© m2iformation PHP-PE 27
CONCEPT OBJET

© m2iformation PHP-PE 28
CONCEPT OBJET

© m2iformation PHP-PE 29
CONCEPT OBJET

© m2iformation PHP-PE 30
CONCEPT OBJET

Pour résumer, le nombre de paramètres obligatoires de la méthode fille doit


être inférieur ou égal au nombre de paramètres possibles de la méthode
mère ;
le nombre de paramètres possibles de la méthode fille doit, quant à lui, être
supérieur ou égal au nombre de paramètres possibles de la méthode mère.

© m2iformation PHP-PE 31
CONCEPT OBJET

© m2iformation PHP-PE 32
CONCEPT OBJET

© m2iformation PHP-PE 33
CONCEPT OBJET

© m2iformation PHP-PE 34
CONCEPT OBJET

© m2iformation PHP-PE 35
CONCEPT OBJET

© m2iformation PHP-PE 36
CONCEPT OBJET

© m2iformation PHP-PE 37
CONCEPT OBJET

© m2iformation PHP-PE 38
CONCEPT OBJET

© m2iformation PHP-PE 39
CONCEPT OBJET

© m2iformation PHP-PE 40
CONCEPT OBJET

© m2iformation PHP-PE 41
CONCEPT OBJET

© m2iformation PHP-PE 42
CONCEPT OBJET

© m2iformation PHP-PE 43
CONCEPT OBJET

© m2iformation PHP-PE 44
CONCEPT OBJET

© m2iformation PHP-PE 45
CONCEPT OBJET

© m2iformation PHP-PE 46
CONCEPT OBJET

© m2iformation PHP-PE 47
CONCEPT OBJET

© m2iformation PHP-PE 48
CONCEPT OBJET

© m2iformation PHP-PE 49
CONCEPT OBJET

© m2iformation PHP-PE 50
CONCEPT OBJET

© m2iformation PHP-PE 51
CONCEPT OBJET

© m2iformation PHP-PE 52
CONCEPT OBJET

© m2iformation PHP-PE 53
CONCEPT OBJET

© m2iformation PHP-PE 54
CONCEPT OBJET

© m2iformation PHP-PE 55
CONCEPT OBJET

© m2iformation PHP-PE 56
PDO (PHP Data Object)

PHP-PE
© m2iformation PHP-PE 57
PDO (PHP DATA OBJECT)

© m2iformation PHP-PE 58
PDO (PHP DATA OBJECT)

© m2iformation PHP-PE 59
PDO (PHP DATA OBJECT)

© m2iformation PHP-PE 60
PDO (PHP DATA OBJECT)

© m2iformation PHP-PE 61
PDO (PHP DATA OBJECT)

© m2iformation PHP-PE 62
PDO (PHP DATA OBJECT)

© m2iformation PHP-PE 63
PDO (PHP DATA OBJECT)

© m2iformation PHP-PE 64
PDO (PHP DATA OBJECT)

© m2iformation PHP-PE 65
PDO (PHP DATA OBJECT)

© m2iformation PHP-PE 66
PDO (PHP DATA OBJECT)

© m2iformation PHP-PE 67
PDO (PHP DATA OBJECT)

© m2iformation PHP-PE 68
PDO (PHP DATA OBJECT)

© m2iformation PHP-PE 69
PDO (PHP DATA OBJECT)

© m2iformation PHP-PE 70
PDO (PHP DATA OBJECT)

© m2iformation PHP-PE 71
PDO (PHP DATA OBJECT)

© m2iformation PHP-PE 72
PDO (PHP DATA OBJECT)

© m2iformation PHP-PE 73
PDO (PHP DATA OBJECT)

© m2iformation PHP-PE 74
PDO (PHP DATA OBJECT)

© m2iformation PHP-PE 75
PDO (PHP DATA OBJECT)

© m2iformation PHP-PE 76
PDO (PHP DATA OBJECT)

© m2iformation PHP-PE 77
PDO (PHP DATA OBJECT)

© m2iformation PHP-PE 78
PDO (PHP DATA OBJECT)

© m2iformation PHP-PE 79
PDO (PHP DATA OBJECT)

© m2iformation PHP-PE 80
PDO (PHP DATA OBJECT)

© m2iformation PHP-PE 81
PDO (PHP DATA OBJECT)

© m2iformation PHP-PE 82
PDO (PHP DATA OBJECT)

© m2iformation PHP-PE 83
PHP et XML

PHP-PE
© m2iformation PHP-PE 84
PHP ET XML

© m2iformation PHP-PE 85
PHP ET XML

© m2iformation PHP-PE 86
PHP ET XML

© m2iformation PHP-PE 87
PHP ET XML

© m2iformation PHP-PE 88
PHP ET XML

© m2iformation PHP-PE 89
PHP ET XML

© m2iformation PHP-PE 90
PHP ET XML

© m2iformation PHP-PE 91
PHP ET XML

© m2iformation PHP-PE 92
PHP ET XML

© m2iformation PHP-PE 93
PHP ET XML

© m2iformation PHP-PE 94
PHP ET XML

© m2iformation PHP-PE 95
PHP ET XML

© m2iformation PHP-PE 96
PHP ET XML

© m2iformation PHP-PE 97
PHP ET XML

© m2iformation PHP-PE 98
PHP ET XML

© m2iformation PHP-PE 99
PHP ET XML

© m2iformation PHP-PE 100


PHP ET XML

© m2iformation PHP-PE 101


PHP ET XML

© m2iformation PHP-PE 102


PHP ET XML

© m2iformation PHP-PE 103


PHP ET XML

© m2iformation PHP-PE 104


PHP ET XML

© m2iformation PHP-PE 105


PHP ET XML

© m2iformation PHP-PE 106


PHP ET XML

© m2iformation PHP-PE 107


PHP ET XML

© m2iformation PHP-PE 108


PHP ET XML

© m2iformation PHP-PE 109


PHP ET XML

© m2iformation PHP-PE 110


Sécurité

PHP-PE
© m2iformation PHP-PE 111
SÉCURITÉ

© m2iformation PHP-PE 112


SÉCURITÉ

© m2iformation PHP-PE 113


SÉCURITÉ

© m2iformation PHP-PE 114


SÉCURITÉ

© m2iformation PHP-PE 115


SÉCURITÉ

safe_mode : Active ou non le mode de sécurité de PHP. (voir le manuel)


magic_quotes_gpc : Fixe le mode magic_quotes pour les opérations GPC
(Get/Post/Cookie). Lorsque magic_quotes est activé, tous les caractères '
(guillemets simples), " (guillemets doubles), \ (antislash) et NUL sont échappés
avec un antislash.
magic_quotes_runtime : Si activé, toutes les fonctions qui obtiennent des
données auprès d'une source externe, y compris les bases de données et les
fichiers texte, verront leur guillemets échappés avec un antislash. Si
magic_quotes_sybase est aussi activé, les guillemets simples seront échappés avec
un autre guillemet simple, plutôt qu'un antislash.
register_globals : Définit si oui ou non les variables EGPCS (Environment, GET,
POST, Cookie, Server) seront enregistrées comme des variables globales.
register_long_arrays : Dit à PHP si oui ou non il doit enregistrer les types
obsolètes $HTTP_*_VARS comme variables pré-définies. Lorsque cette directive
est activée (par défaut), les variables longues PHP comme $HTTP_GET_VARS
seront définies. Si vous ne les utilisez pas, il est recommandé de désactiver cette
option pour des raisons de performance.
open_basedir : Limite les fichiers accessibles par PHP dans l'arborescence. Cette
directive n'est pas affectée par le safe mode.
Lorsqu'un script tente d'ouvrir un fichier, avec les fonctions fopen ou gzopen , la
situation du fichier est vérifiée. Si le fichier se situe hors du dossier spécifié dans
cette directive, PHP refusera de l'ouvrir. Les liens symboliques sont résolus, ce qui
fait que cette restriction ne peut être contournée par un lien symbolique.

© m2iformation PHP-PE 116


SÉCURITÉ

disable_functions : Cette directive vous permet de désactiver certaines fonctions pour des
raisons de sécurité. Elle prend une liste de nom de fonctions, séparés par des virgules.
disable_functions n'est pas affectée par le safe mode.
disable_classes : Cette directive vous permet de désactiver certaines classes pour des raisons
de securité. Elle prend une liste de noms de classes délimités par une virgule. Cette directive
n'est pas affectée par le Safe Mode.
enable_dl : Cette directive est réellement utile lorsque PHP est compilé comme module
Apache. Vous pouvez activer le chargement dynamique d'extension avec la fonction PHP dl au
cas par cas, pour chaque serveur virtuel. La raison principale pour désactiver ce système est la
sécurité. Avec le chargement dynamique, il est possible de passer outre les configurations de
safe mode et open_basedir. Par défaut, le chargement dynamique est autorisé, sauf avec le
safe mode . En safe mode, il est toujours impossible d'utiliser la fonction dl.
dl — Charge une extension PHP à la volée (supprimée depuis la version 5.3)
memory_limit : Cette option détermine la mémoire limite, en octets, qu'un script est autorisé
à allouer. Cela permet de prévenir l'utilisation de toute la mémoire par un script mal codé.
Notez que pour n'avoir aucune limite, vous devez définir cette directive à -1.
max_execution_time : Fixe le temps maximal d'exécution d'un script, en secondes. Cela
permet d'éviter que des scripts en boucles infinies saturent le serveur. La configuration par
défaut est de 30 secondes. Lorsque PHP fonctionne depuis la ligne de commande, la valeur par
défaut est 0.
max_post_size : Définit la taille maximale des données reçues par la méthode POST. Cette
option affecte également les fichiers chargés. Pour charger de gros fichiers, cette valeur doit
être plus grande que la valeur de upload_max_filesize. Si la limitation de mémoire est activée
par votre script de configuration, memory_limit affectera également les fichiers chargés.
max_upload_size : La taille maximale en octets d'un fichier à charger.
expose_php : Expose à tous les clients le fait que PHP est installé sur le serveur. Ceci inclut

© m2iformation PHP-PE 117


la version de PHP dans les en-têtes HTTP de la réponse (X-Powered-By : PHP/5.3.7). Les logos
sont aussi activés, donc ajouter leur chaîne aux urls d'un site ayant PHP d'activé les affichera
(http://www.php.net/?=PHPE9568F34-D428-11d2-A769-00AA001ACF42). Ceci affecte aussi
la sortie de phpinfo(). Lorsque les logos sont désactivés, le logo PHP et les crédits ne
s'affichent pas.

© m2iformation PHP-PE ‹N°›


SÉCURITÉ

eval : La construction de langage eval() est très dangereuse car elle autorise
l'exécution de code PHP arbitraire. Son utilisation est vivement déconseillée. Si
vous avez soigneusement vérifié qu'il n'y a pas d'autres options que de l'utiliser,
gardez une attention toute particulière à ne pas y passer de données provenant
d'un utilisateur sans les avoir précédemment validées minutieusement.
assert : Vérifie si une assertion est fausse. Il est recommandé de n'utiliser les
assertions que comme outil de débogage.

© m2iformation PHP-PE 118


SÉCURITÉ

© m2iformation PHP-PE 119


SÉCURITÉ

© m2iformation PHP-PE 120


SÉCURITÉ

© m2iformation PHP-PE 121


SÉCURITÉ

© m2iformation PHP-PE 122


SÉCURITÉ

© m2iformation PHP-PE 123


SÉCURITÉ

© m2iformation PHP-PE 124


SÉCURITÉ

© m2iformation PHP-PE 125


SÉCURITÉ

--skip-grant-tables :
--old-password :
--secure-auth :
--skip-show-databases :

© m2iformation PHP-PE 126


SÉCURITÉ

--skip-grant-tables :
--old-password :
--secure-auth :
--skip-show-databases :

© m2iformation PHP-PE 127


SÉCURITÉ

© m2iformation PHP-PE 128


SÉCURITÉ

© m2iformation PHP-PE 129


SÉCURITÉ

© m2iformation PHP-PE 130


SÉCURITÉ

© m2iformation PHP-PE 131


SÉCURITÉ

© m2iformation PHP-PE 132


SÉCURITÉ

© m2iformation PHP-PE 133


SÉCURITÉ

© m2iformation PHP-PE 134


SÉCURITÉ

© m2iformation PHP-PE 135


SÉCURITÉ

© m2iformation PHP-PE 136


SÉCURITÉ

© m2iformation PHP-PE 137


SÉCURITÉ

© m2iformation PHP-PE 138


SÉCURITÉ

© m2iformation PHP-PE 139


SÉCURITÉ

© m2iformation PHP-PE 140


SÉCURITÉ

© m2iformation PHP-PE 141


SÉCURITÉ

© m2iformation PHP-PE 142


SÉCURITÉ

© m2iformation PHP-PE 143


SÉCURITÉ

© m2iformation PHP-PE 144


SÉCURITÉ

© m2iformation PHP-PE 145


SÉCURITÉ

© m2iformation PHP-PE 146


SÉCURITÉ

© m2iformation PHP-PE 147


SÉCURITÉ

© m2iformation PHP-PE 148


SÉCURITÉ

© m2iformation PHP-PE 149


SÉCURITÉ

© m2iformation PHP-PE 150


SÉCURITÉ

© m2iformation PHP-PE 151


SÉCURITÉ

© m2iformation PHP-PE 152


SÉCURITÉ

© m2iformation PHP-PE 153


SÉCURITÉ

Un CAPTCHA est une forme de test de Turing permettant de différencier de


manière automatisée un utilisateur humain d'un ordinateur.

© m2iformation PHP-PE 154


SÉCURITÉ

© m2iformation PHP-PE 155


SÉCURITÉ

© m2iformation PHP-PE 156


Créer un dossier sécurisé

PHP-PE
© m2iformation PHP-PE 157
CRÉER UN DOSSIER SÉCURISÉ

© m2iformation PHP-PE 158


CRÉER UN DOSSIER SÉCURISÉ

© m2iformation PHP-PE 159


CRÉER UN DOSSIER SÉCURISÉ

© m2iformation PHP-PE 160


CRÉER UN DOSSIER SÉCURISÉ

© m2iformation PHP-PE 161


CRÉER UN DOSSIER SÉCURISÉ

© m2iformation PHP-PE 162


CRÉER UN DOSSIER SÉCURISÉ

© m2iformation PHP-PE 163


CRÉER UN DOSSIER SÉCURISÉ

© m2iformation PHP-PE 164


CRÉER UN DOSSIER SÉCURISÉ

© m2iformation PHP-PE 165


CRÉER UN DOSSIER SÉCURISÉ

© m2iformation PHP-PE 166


CRÉER UN DOSSIER SÉCURISÉ

© m2iformation PHP-PE 167


CRÉER UN DOSSIER SÉCURISÉ

© m2iformation PHP-PE 168


CRÉER UN DOSSIER SÉCURISÉ

© m2iformation PHP-PE 169


CRÉER UN DOSSIER SÉCURISÉ

© m2iformation PHP-PE 170


CRÉER UN DOSSIER SÉCURISÉ

© m2iformation PHP-PE 171


Débogage et optimisation

PHP-PE
© m2iformation PHP-PE 172
DÉBOGAGE ET OPTIMISATION

© m2iformation PHP-PE 173


DÉBOGAGE ET OPTIMISATION

© m2iformation PHP-PE 174


DÉBOGAGE ET OPTIMISATION

© m2iformation PHP-PE 175


DÉBOGAGE ET OPTIMISATION

© m2iformation PHP-PE 176


DÉBOGAGE ET OPTIMISATION

© m2iformation PHP-PE 177


DÉBOGAGE ET OPTIMISATION

© m2iformation PHP-PE 178


DÉBOGAGE ET OPTIMISATION

© m2iformation PHP-PE 179


DÉBOGAGE ET OPTIMISATION

© m2iformation PHP-PE 180


DÉBOGAGE ET OPTIMISATION

© m2iformation PHP-PE 181


DÉBOGAGE ET OPTIMISATION

© m2iformation PHP-PE 182


DÉBOGAGE ET OPTIMISATION

© m2iformation PHP-PE 183


DÉBOGAGE ET OPTIMISATION

© m2iformation PHP-PE 184


DÉBOGAGE ET OPTIMISATION

© m2iformation PHP-PE 185


DÉBOGAGE ET OPTIMISATION

© m2iformation PHP-PE 186


DÉBOGAGE ET OPTIMISATION

© m2iformation PHP-PE 187


DÉBOGAGE ET OPTIMISATION

© m2iformation PHP-PE 188


DÉBOGAGE ET OPTIMISATION

© m2iformation PHP-PE 189


DÉBOGAGE ET OPTIMISATION

© m2iformation PHP-PE 190


DÉBOGAGE ET OPTIMISATION

© m2iformation PHP-PE 191


DÉBOGAGE ET OPTIMISATION

© m2iformation PHP-PE 192


DÉBOGAGE ET OPTIMISATION

© m2iformation PHP-PE 193


DÉBOGAGE ET OPTIMISATION

© m2iformation PHP-PE 194


DÉBOGAGE ET OPTIMISATION

© m2iformation PHP-PE 195


DÉBOGAGE ET OPTIMISATION

© m2iformation PHP-PE 196


DÉBOGAGE ET OPTIMISATION

© m2iformation PHP-PE 197


DÉBOGAGE ET OPTIMISATION

© m2iformation PHP-PE 198


DÉBOGAGE ET OPTIMISATION

© m2iformation PHP-PE 199


DÉBOGAGE ET OPTIMISATION

© m2iformation PHP-PE 200


DÉBOGAGE ET OPTIMISATION

© m2iformation PHP-PE 201


DÉBOGAGE ET OPTIMISATION

© m2iformation PHP-PE 202


DÉBOGAGE ET OPTIMISATION

© m2iformation PHP-PE 203


DÉBOGAGE ET OPTIMISATION

© m2iformation PHP-PE 204


Services Web avec PHP5

PHP-PE
© m2iformation PHP-PE 205
SERVICES WEB AVEC PHP5

© m2iformation PHP-PE 206


SERVICES WEB AVEC PHP5

© m2iformation PHP-PE 207


SERVICES WEB AVEC PHP5

© m2iformation PHP-PE 208


SERVICES WEB AVEC PHP5

© m2iformation PHP-PE 209


SERVICES WEB AVEC PHP5

© m2iformation PHP-PE 210


SERVICES WEB AVEC PHP5

© m2iformation PHP-PE 211


SERVICES WEB AVEC PHP5

© m2iformation PHP-PE 212


SERVICES WEB AVEC PHP5

© m2iformation PHP-PE 213


SERVICES WEB AVEC PHP5

© m2iformation PHP-PE 214


SERVICES WEB AVEC PHP5

© m2iformation PHP-PE 215


SERVICES WEB AVEC PHP5

© m2iformation PHP-PE 216


SERVICES WEB AVEC PHP5

© m2iformation PHP-PE 217


SERVICES WEB AVEC PHP5

© m2iformation PHP-PE 218


SERVICES WEB AVEC PHP5

© m2iformation PHP-PE 219


SERVICES WEB AVEC PHP5

© m2iformation PHP-PE 220


SERVICES WEB AVEC PHP5

© m2iformation PHP-PE 221


SERVICES WEB AVEC PHP5

© m2iformation PHP-PE 222


SERVICES WEB AVEC PHP5

© m2iformation PHP-PE 223


SERVICES WEB AVEC PHP5

© m2iformation PHP-PE 224


SERVICES WEB AVEC PHP5

© m2iformation PHP-PE 225


SERVICES WEB AVEC PHP5

© m2iformation PHP-PE 226


SERVICES WEB AVEC PHP5

© m2iformation PHP-PE 227


SERVICES WEB AVEC PHP5

© m2iformation PHP-PE 228


SERVICES WEB AVEC PHP5

© m2iformation PHP-PE 229


SERVICES WEB AVEC PHP5

© m2iformation PHP-PE 230


SERVICES WEB AVEC PHP5

© m2iformation PHP-PE 231


SERVICES WEB AVEC PHP5

© m2iformation PHP-PE 232


Le framework Zend

PHP-PE
© m2iformation PHP-PE 233
LE FRAMEWORK ZEND

© m2iformation PHP-PE 234


LE FRAMEWORK ZEND

© m2iformation PHP-PE 235


LE FRAMEWORK ZEND

© m2iformation PHP-PE 236


LE FRAMEWORK ZEND

© m2iformation PHP-PE 237


LE FRAMEWORK ZEND

© m2iformation PHP-PE 238


LE FRAMEWORK ZEND

© m2iformation PHP-PE 239


LE FRAMEWORK ZEND

© m2iformation PHP-PE 240


LE FRAMEWORK ZEND

© m2iformation PHP-PE 241


LE FRAMEWORK ZEND

La licence BSD (Berkeley software distribution license) est une licence libre utilisée
pour la distribution de logiciels. Elle permet de réutiliser tout ou une partie
du logiciel sans restriction, qu'il soit intégré dans un logiciel libre ou propriétaire.
La licence BSD contenait avant 1999 une clause « publicitaire » qui posait plusieurs
problèmes pratiques
Lors de la révision de la licence BSD, le directeur de l'Office of Technology
Licensing de l'Université de Californie a confirmé le 22 juillet 1999 que cette clause
(n°3) était « retirée dans son intégralité ». Cette version est souvent appelée
« Nouvelle Licence BSD » ou « Licence BSD Modifiée ».

© m2iformation PHP-PE 242


LE FRAMEWORK ZEND

© m2iformation PHP-PE 243


LE FRAMEWORK ZEND

© m2iformation PHP-PE 244


LE FRAMEWORK ZEND

© m2iformation PHP-PE 245


LE FRAMEWORK ZEND

© m2iformation PHP-PE 246


LE FRAMEWORK ZEND

© m2iformation PHP-PE 247


LE FRAMEWORK ZEND

© m2iformation PHP-PE 248


LE FRAMEWORK ZEND

© m2iformation PHP-PE 249


LE FRAMEWORK ZEND

© m2iformation PHP-PE 250


LE FRAMEWORK ZEND

© m2iformation PHP-PE 251


LE FRAMEWORK ZEND

© m2iformation PHP-PE 252


LE FRAMEWORK ZEND

© m2iformation PHP-PE 253


LE FRAMEWORK ZEND

© m2iformation PHP-PE 254


LE FRAMEWORK ZEND

© m2iformation PHP-PE 255


LE FRAMEWORK ZEND

© m2iformation PHP-PE 256


LE FRAMEWORK ZEND

© m2iformation PHP-PE 257


LE FRAMEWORK ZEND

© m2iformation PHP-PE 258


LE FRAMEWORK ZEND

© m2iformation PHP-PE 259


LE FRAMEWORK ZEND

© m2iformation PHP-PE 260


LE FRAMEWORK ZEND

© m2iformation PHP-PE 261


© m2iformation PHP-PE 262

Vous aimerez peut-être aussi