Programmation PHP/Version imprimable

Un livre de Wikilivres.
Aller à : navigation, rechercher
Ceci est la version imprimable de Programmation PHP.
  • Si vous imprimez cette page, choisissez « Aperçu avant impression » dans votre navigateur, ou cliquez sur le lien Version imprimable dans la boîte à outils, vous verrez cette page sans ce message, ni éléments de navigation sur la gauche ou en haut.
  • Cliquez sur Rafraîchir cette page pour obtenir la dernière version du wikilivre.
  • Pour plus d'informations sur les version imprimables, y compris la manière d'obtenir une version PDF, vous pouvez lire l'article Versions imprimables.


Programmation PHP

Une version à jour et éditable de ce livre est disponible sur Wikilivres,
une bibliothèque de livres pédagogiques, à l'URL :
http://fr.wikibooks.org/wiki/Programmation_PHP

Vous avez la permission de copier, distribuer et/ou modifier ce document selon les termes de la Licence de documentation libre GNU, version 1.2 ou plus récente publiée par la Free Software Foundation ; sans sections inaltérables, sans texte de première page de couverture et sans Texte de dernière page de couverture. Une copie de cette licence est inclue dans l'annexe nommée « Licence de documentation libre GNU ».

Sections

Introduction

Historique[modifier | modifier le wikicode]

PHP est un langage de script créé par Rasmus Lerdorf. Principalement utilisé pour la programmation Web, on pourrait le situer entre les SSI (Server Side Includes) et le langage de script Perl. Il est utilisé sur tous les systèmes d'exploitation tels Windows, Gnu Linux ou autre Unix commercial, ce qui en fait un langage très portatif. PHP a récemment acquis une place incontournable dans le développement Web Open Source. Sa popularité vient de sa syntaxe, proche du C, de sa vitesse et de sa simplicité. On estime qu'il y a 4,8 millions de serveurs qui utilisent le langage. 33 millions de serveurs ont été testés, les serveurs non-HTTP, inaccessibles ou bien encore les parkings à noms de domaines (plus de 500 domaines), ont été écartés des statistiques. La sortie de PHP 5 a permis au langage d'atteindre une certaine maturité. Désormais, il est reconnu comme un serveur d'application à part entière tel que J2EE ou .Net.

Sites Web statiques ou dynamiques[modifier | modifier le wikicode]

À l'origine du Web, les sites Web étaient des sites statiques : constitués d'un ensemble de pages écrites dans le langage HTML. L'information présente sur ces pages était toujours identique et leur mise à jour était particulièrement fastidieuse. Le serveur Web se contentait de diffuser les pages telles quelles à l'utilisateur. L'interaction entre le site et l'utilisateur était très sommaire : l'utilisateur demandait une page web et le serveur la lui fournissait.
Aujourd'hui la plupart des sites sont dynamiques : à l'intérieur des pages HTML, le concepteur du site a inséré des programmes. Ces programmes permettent une plus grande souplesse dans la gestion du site, sa mise à jour et ses fonctionnalités. La possibilité d'insérer des programmes a permis de décupler les fonctionnalités des sites Web.

Pour vous en convaincre prenons quelques exemples :

  • Vous voulez écrire un site qui présente une centaine de produits. Vous n'allez pas écrire 100 pages différentes, une pour chacun des produits ! Mais plutôt une seule page (page type) permettant de présenter n'importe quel produit. Cette page va contenir un programme qui interagira avec une base de données. Dans la base de données, seront stockées les informations utiles pour chaque produit : le nom du produit, sa présentation, sa référence, son prix, etc. Le programme aura donc pour rôle d'aller chercher l'information utile dans la base de données et de l'afficher en HTML. De plus, pour ajouter un produit, il suffira d'ajouter un élément dans la base de données. Il est même possible d'avoir des programmes permettant de passer une commande pour vos différents produits !
  • Vous voulez diffuser rapidement des informations sur Internet : vous voulez avoir un outil convivial qui vous permet d'ajouter un article, de le modifier, de le supprimer... Vous allez donc écrire un programme permettant de modifier à volonté les différents articles. Un exemple bien connu de ce type de programme est le Blog : il s'agit d'un programme permettant à n'importe quel utilisateur non informaticien de gérer ses différents articles.
  • L'encyclopédie Wikipédia est réalisée avec un programme (en PHP d'ailleurs) qui permet à chaque utilisateur de créer et de modifier les articles tout en gardant un historique complet des différentes versions des articles.
  • les forums de discussion sont des lieux d'échange permettant une interaction étroite entre le serveur et l'utilisateur. Grâce aux programmes qu'ils utilisent, il est possible de se connecter, de consulter les messages des différents forums, d'y répondre. Les modérateurs de ces forums peuvent modifier les messages, les supprimer, interdire un utilisateur indélicat.

Dans chacun des exemples précédents il a été nécessaire d'incorporer un programme à l'intérieur des pages du site afin de réaliser des fonctionnalités de haut niveau. Aujourd'hui la quasi-totalité des sites professionnels sont dynamiques et il est quasi inconcevable de réaliser un site statique. Le langage PHP est un des langages utilisables pour réaliser facilement les sites Web dynamiques, ne serait-ce que parce qu'il est disponible sur la plupart des serveurs hébergeant des sites.

Possibilités[modifier | modifier le wikicode]

Si vous êtes déjà allés sur un site qui vous demandait de vous connecter, vous avez utilisé un script côté serveur. Ce script était certainement écrit en PHP, en raison de la popularité de ce dernier. PHP transforme une page statique (fichier HTML par exemple), en une suite d'instructions interprétables par PHP, installée sur un serveur Web comme Apache - ça peut-être simplement un "Hello World" 50 fois dans une colonne, ou une interaction avec un système de base de données, comme MySQL, fréquemment couplé à PHP.

Liens externes[modifier | modifier le wikicode]


Introduction#Historique

Historique[modifier | modifier le wikicode]

PHP est un langage de script créé par Rasmus Lerdorf. Principalement utilisé pour la programmation Web, on pourrait le situer entre les SSI (Server Side Includes) et le langage de script Perl. Il est utilisé sur tous les systèmes d'exploitation tels Windows, Gnu Linux ou autre Unix commercial, ce qui en fait un langage très portatif. PHP a récemment acquis une place incontournable dans le développement Web Open Source. Sa popularité vient de sa syntaxe, proche du C, de sa vitesse et de sa simplicité. On estime qu'il y a 4,8 millions de serveurs qui utilisent le langage. 33 millions de serveurs ont été testés, les serveurs non-HTTP, inaccessibles ou bien encore les parkings à noms de domaines (plus de 500 domaines), ont été écartés des statistiques. La sortie de PHP 5 a permis au langage d'atteindre une certaine maturité. Désormais, il est reconnu comme un serveur d'application à part entière tel que J2EE ou .Net.

Sites Web statiques ou dynamiques[modifier | modifier le wikicode]

À l'origine du Web, les sites Web étaient des sites statiques : constitués d'un ensemble de pages écrites dans le langage HTML. L'information présente sur ces pages était toujours identique et leur mise à jour était particulièrement fastidieuse. Le serveur Web se contentait de diffuser les pages telles quelles à l'utilisateur. L'interaction entre le site et l'utilisateur était très sommaire : l'utilisateur demandait une page web et le serveur la lui fournissait.
Aujourd'hui la plupart des sites sont dynamiques : à l'intérieur des pages HTML, le concepteur du site a inséré des programmes. Ces programmes permettent une plus grande souplesse dans la gestion du site, sa mise à jour et ses fonctionnalités. La possibilité d'insérer des programmes a permis de décupler les fonctionnalités des sites Web.

Pour vous en convaincre prenons quelques exemples :

  • Vous voulez écrire un site qui présente une centaine de produits. Vous n'allez pas écrire 100 pages différentes, une pour chacun des produits ! Mais plutôt une seule page (page type) permettant de présenter n'importe quel produit. Cette page va contenir un programme qui interagira avec une base de données. Dans la base de données, seront stockées les informations utiles pour chaque produit : le nom du produit, sa présentation, sa référence, son prix, etc. Le programme aura donc pour rôle d'aller chercher l'information utile dans la base de données et de l'afficher en HTML. De plus, pour ajouter un produit, il suffira d'ajouter un élément dans la base de données. Il est même possible d'avoir des programmes permettant de passer une commande pour vos différents produits !
  • Vous voulez diffuser rapidement des informations sur Internet : vous voulez avoir un outil convivial qui vous permet d'ajouter un article, de le modifier, de le supprimer... Vous allez donc écrire un programme permettant de modifier à volonté les différents articles. Un exemple bien connu de ce type de programme est le Blog : il s'agit d'un programme permettant à n'importe quel utilisateur non informaticien de gérer ses différents articles.
  • L'encyclopédie Wikipédia est réalisée avec un programme (en PHP d'ailleurs) qui permet à chaque utilisateur de créer et de modifier les articles tout en gardant un historique complet des différentes versions des articles.
  • les forums de discussion sont des lieux d'échange permettant une interaction étroite entre le serveur et l'utilisateur. Grâce aux programmes qu'ils utilisent, il est possible de se connecter, de consulter les messages des différents forums, d'y répondre. Les modérateurs de ces forums peuvent modifier les messages, les supprimer, interdire un utilisateur indélicat.

Dans chacun des exemples précédents il a été nécessaire d'incorporer un programme à l'intérieur des pages du site afin de réaliser des fonctionnalités de haut niveau. Aujourd'hui la quasi-totalité des sites professionnels sont dynamiques et il est quasi inconcevable de réaliser un site statique. Le langage PHP est un des langages utilisables pour réaliser facilement les sites Web dynamiques, ne serait-ce que parce qu'il est disponible sur la plupart des serveurs hébergeant des sites.

Possibilités[modifier | modifier le wikicode]

Si vous êtes déjà allés sur un site qui vous demandait de vous connecter, vous avez utilisé un script côté serveur. Ce script était certainement écrit en PHP, en raison de la popularité de ce dernier. PHP transforme une page statique (fichier HTML par exemple), en une suite d'instructions interprétables par PHP, installée sur un serveur Web comme Apache - ça peut-être simplement un "Hello World" 50 fois dans une colonne, ou une interaction avec un système de base de données, comme MySQL, fréquemment couplé à PHP.

Liens externes[modifier | modifier le wikicode]


Introduction#Sites Web statiques ou dynamiques

Historique[modifier | modifier le wikicode]

PHP est un langage de script créé par Rasmus Lerdorf. Principalement utilisé pour la programmation Web, on pourrait le situer entre les SSI (Server Side Includes) et le langage de script Perl. Il est utilisé sur tous les systèmes d'exploitation tels Windows, Gnu Linux ou autre Unix commercial, ce qui en fait un langage très portatif. PHP a récemment acquis une place incontournable dans le développement Web Open Source. Sa popularité vient de sa syntaxe, proche du C, de sa vitesse et de sa simplicité. On estime qu'il y a 4,8 millions de serveurs qui utilisent le langage. 33 millions de serveurs ont été testés, les serveurs non-HTTP, inaccessibles ou bien encore les parkings à noms de domaines (plus de 500 domaines), ont été écartés des statistiques. La sortie de PHP 5 a permis au langage d'atteindre une certaine maturité. Désormais, il est reconnu comme un serveur d'application à part entière tel que J2EE ou .Net.

Sites Web statiques ou dynamiques[modifier | modifier le wikicode]

À l'origine du Web, les sites Web étaient des sites statiques : constitués d'un ensemble de pages écrites dans le langage HTML. L'information présente sur ces pages était toujours identique et leur mise à jour était particulièrement fastidieuse. Le serveur Web se contentait de diffuser les pages telles quelles à l'utilisateur. L'interaction entre le site et l'utilisateur était très sommaire : l'utilisateur demandait une page web et le serveur la lui fournissait.
Aujourd'hui la plupart des sites sont dynamiques : à l'intérieur des pages HTML, le concepteur du site a inséré des programmes. Ces programmes permettent une plus grande souplesse dans la gestion du site, sa mise à jour et ses fonctionnalités. La possibilité d'insérer des programmes a permis de décupler les fonctionnalités des sites Web.

Pour vous en convaincre prenons quelques exemples :

  • Vous voulez écrire un site qui présente une centaine de produits. Vous n'allez pas écrire 100 pages différentes, une pour chacun des produits ! Mais plutôt une seule page (page type) permettant de présenter n'importe quel produit. Cette page va contenir un programme qui interagira avec une base de données. Dans la base de données, seront stockées les informations utiles pour chaque produit : le nom du produit, sa présentation, sa référence, son prix, etc. Le programme aura donc pour rôle d'aller chercher l'information utile dans la base de données et de l'afficher en HTML. De plus, pour ajouter un produit, il suffira d'ajouter un élément dans la base de données. Il est même possible d'avoir des programmes permettant de passer une commande pour vos différents produits !
  • Vous voulez diffuser rapidement des informations sur Internet : vous voulez avoir un outil convivial qui vous permet d'ajouter un article, de le modifier, de le supprimer... Vous allez donc écrire un programme permettant de modifier à volonté les différents articles. Un exemple bien connu de ce type de programme est le Blog : il s'agit d'un programme permettant à n'importe quel utilisateur non informaticien de gérer ses différents articles.
  • L'encyclopédie Wikipédia est réalisée avec un programme (en PHP d'ailleurs) qui permet à chaque utilisateur de créer et de modifier les articles tout en gardant un historique complet des différentes versions des articles.
  • les forums de discussion sont des lieux d'échange permettant une interaction étroite entre le serveur et l'utilisateur. Grâce aux programmes qu'ils utilisent, il est possible de se connecter, de consulter les messages des différents forums, d'y répondre. Les modérateurs de ces forums peuvent modifier les messages, les supprimer, interdire un utilisateur indélicat.

Dans chacun des exemples précédents il a été nécessaire d'incorporer un programme à l'intérieur des pages du site afin de réaliser des fonctionnalités de haut niveau. Aujourd'hui la quasi-totalité des sites professionnels sont dynamiques et il est quasi inconcevable de réaliser un site statique. Le langage PHP est un des langages utilisables pour réaliser facilement les sites Web dynamiques, ne serait-ce que parce qu'il est disponible sur la plupart des serveurs hébergeant des sites.

Possibilités[modifier | modifier le wikicode]

Si vous êtes déjà allés sur un site qui vous demandait de vous connecter, vous avez utilisé un script côté serveur. Ce script était certainement écrit en PHP, en raison de la popularité de ce dernier. PHP transforme une page statique (fichier HTML par exemple), en une suite d'instructions interprétables par PHP, installée sur un serveur Web comme Apache - ça peut-être simplement un "Hello World" 50 fois dans une colonne, ou une interaction avec un système de base de données, comme MySQL, fréquemment couplé à PHP.

Liens externes[modifier | modifier le wikicode]


Introduction#Possibilités

Historique[modifier | modifier le wikicode]

PHP est un langage de script créé par Rasmus Lerdorf. Principalement utilisé pour la programmation Web, on pourrait le situer entre les SSI (Server Side Includes) et le langage de script Perl. Il est utilisé sur tous les systèmes d'exploitation tels Windows, Gnu Linux ou autre Unix commercial, ce qui en fait un langage très portatif. PHP a récemment acquis une place incontournable dans le développement Web Open Source. Sa popularité vient de sa syntaxe, proche du C, de sa vitesse et de sa simplicité. On estime qu'il y a 4,8 millions de serveurs qui utilisent le langage. 33 millions de serveurs ont été testés, les serveurs non-HTTP, inaccessibles ou bien encore les parkings à noms de domaines (plus de 500 domaines), ont été écartés des statistiques. La sortie de PHP 5 a permis au langage d'atteindre une certaine maturité. Désormais, il est reconnu comme un serveur d'application à part entière tel que J2EE ou .Net.

Sites Web statiques ou dynamiques[modifier | modifier le wikicode]

À l'origine du Web, les sites Web étaient des sites statiques : constitués d'un ensemble de pages écrites dans le langage HTML. L'information présente sur ces pages était toujours identique et leur mise à jour était particulièrement fastidieuse. Le serveur Web se contentait de diffuser les pages telles quelles à l'utilisateur. L'interaction entre le site et l'utilisateur était très sommaire : l'utilisateur demandait une page web et le serveur la lui fournissait.
Aujourd'hui la plupart des sites sont dynamiques : à l'intérieur des pages HTML, le concepteur du site a inséré des programmes. Ces programmes permettent une plus grande souplesse dans la gestion du site, sa mise à jour et ses fonctionnalités. La possibilité d'insérer des programmes a permis de décupler les fonctionnalités des sites Web.

Pour vous en convaincre prenons quelques exemples :

  • Vous voulez écrire un site qui présente une centaine de produits. Vous n'allez pas écrire 100 pages différentes, une pour chacun des produits ! Mais plutôt une seule page (page type) permettant de présenter n'importe quel produit. Cette page va contenir un programme qui interagira avec une base de données. Dans la base de données, seront stockées les informations utiles pour chaque produit : le nom du produit, sa présentation, sa référence, son prix, etc. Le programme aura donc pour rôle d'aller chercher l'information utile dans la base de données et de l'afficher en HTML. De plus, pour ajouter un produit, il suffira d'ajouter un élément dans la base de données. Il est même possible d'avoir des programmes permettant de passer une commande pour vos différents produits !
  • Vous voulez diffuser rapidement des informations sur Internet : vous voulez avoir un outil convivial qui vous permet d'ajouter un article, de le modifier, de le supprimer... Vous allez donc écrire un programme permettant de modifier à volonté les différents articles. Un exemple bien connu de ce type de programme est le Blog : il s'agit d'un programme permettant à n'importe quel utilisateur non informaticien de gérer ses différents articles.
  • L'encyclopédie Wikipédia est réalisée avec un programme (en PHP d'ailleurs) qui permet à chaque utilisateur de créer et de modifier les articles tout en gardant un historique complet des différentes versions des articles.
  • les forums de discussion sont des lieux d'échange permettant une interaction étroite entre le serveur et l'utilisateur. Grâce aux programmes qu'ils utilisent, il est possible de se connecter, de consulter les messages des différents forums, d'y répondre. Les modérateurs de ces forums peuvent modifier les messages, les supprimer, interdire un utilisateur indélicat.

Dans chacun des exemples précédents il a été nécessaire d'incorporer un programme à l'intérieur des pages du site afin de réaliser des fonctionnalités de haut niveau. Aujourd'hui la quasi-totalité des sites professionnels sont dynamiques et il est quasi inconcevable de réaliser un site statique. Le langage PHP est un des langages utilisables pour réaliser facilement les sites Web dynamiques, ne serait-ce que parce qu'il est disponible sur la plupart des serveurs hébergeant des sites.

Possibilités[modifier | modifier le wikicode]

Si vous êtes déjà allés sur un site qui vous demandait de vous connecter, vous avez utilisé un script côté serveur. Ce script était certainement écrit en PHP, en raison de la popularité de ce dernier. PHP transforme une page statique (fichier HTML par exemple), en une suite d'instructions interprétables par PHP, installée sur un serveur Web comme Apache - ça peut-être simplement un "Hello World" 50 fois dans une colonne, ou une interaction avec un système de base de données, comme MySQL, fréquemment couplé à PHP.

Liens externes[modifier | modifier le wikicode]


Introduction#Liens Externes

Historique[modifier | modifier le wikicode]

PHP est un langage de script créé par Rasmus Lerdorf. Principalement utilisé pour la programmation Web, on pourrait le situer entre les SSI (Server Side Includes) et le langage de script Perl. Il est utilisé sur tous les systèmes d'exploitation tels Windows, Gnu Linux ou autre Unix commercial, ce qui en fait un langage très portatif. PHP a récemment acquis une place incontournable dans le développement Web Open Source. Sa popularité vient de sa syntaxe, proche du C, de sa vitesse et de sa simplicité. On estime qu'il y a 4,8 millions de serveurs qui utilisent le langage. 33 millions de serveurs ont été testés, les serveurs non-HTTP, inaccessibles ou bien encore les parkings à noms de domaines (plus de 500 domaines), ont été écartés des statistiques. La sortie de PHP 5 a permis au langage d'atteindre une certaine maturité. Désormais, il est reconnu comme un serveur d'application à part entière tel que J2EE ou .Net.

Sites Web statiques ou dynamiques[modifier | modifier le wikicode]

À l'origine du Web, les sites Web étaient des sites statiques : constitués d'un ensemble de pages écrites dans le langage HTML. L'information présente sur ces pages était toujours identique et leur mise à jour était particulièrement fastidieuse. Le serveur Web se contentait de diffuser les pages telles quelles à l'utilisateur. L'interaction entre le site et l'utilisateur était très sommaire : l'utilisateur demandait une page web et le serveur la lui fournissait.
Aujourd'hui la plupart des sites sont dynamiques : à l'intérieur des pages HTML, le concepteur du site a inséré des programmes. Ces programmes permettent une plus grande souplesse dans la gestion du site, sa mise à jour et ses fonctionnalités. La possibilité d'insérer des programmes a permis de décupler les fonctionnalités des sites Web.

Pour vous en convaincre prenons quelques exemples :

  • Vous voulez écrire un site qui présente une centaine de produits. Vous n'allez pas écrire 100 pages différentes, une pour chacun des produits ! Mais plutôt une seule page (page type) permettant de présenter n'importe quel produit. Cette page va contenir un programme qui interagira avec une base de données. Dans la base de données, seront stockées les informations utiles pour chaque produit : le nom du produit, sa présentation, sa référence, son prix, etc. Le programme aura donc pour rôle d'aller chercher l'information utile dans la base de données et de l'afficher en HTML. De plus, pour ajouter un produit, il suffira d'ajouter un élément dans la base de données. Il est même possible d'avoir des programmes permettant de passer une commande pour vos différents produits !
  • Vous voulez diffuser rapidement des informations sur Internet : vous voulez avoir un outil convivial qui vous permet d'ajouter un article, de le modifier, de le supprimer... Vous allez donc écrire un programme permettant de modifier à volonté les différents articles. Un exemple bien connu de ce type de programme est le Blog : il s'agit d'un programme permettant à n'importe quel utilisateur non informaticien de gérer ses différents articles.
  • L'encyclopédie Wikipédia est réalisée avec un programme (en PHP d'ailleurs) qui permet à chaque utilisateur de créer et de modifier les articles tout en gardant un historique complet des différentes versions des articles.
  • les forums de discussion sont des lieux d'échange permettant une interaction étroite entre le serveur et l'utilisateur. Grâce aux programmes qu'ils utilisent, il est possible de se connecter, de consulter les messages des différents forums, d'y répondre. Les modérateurs de ces forums peuvent modifier les messages, les supprimer, interdire un utilisateur indélicat.

Dans chacun des exemples précédents il a été nécessaire d'incorporer un programme à l'intérieur des pages du site afin de réaliser des fonctionnalités de haut niveau. Aujourd'hui la quasi-totalité des sites professionnels sont dynamiques et il est quasi inconcevable de réaliser un site statique. Le langage PHP est un des langages utilisables pour réaliser facilement les sites Web dynamiques, ne serait-ce que parce qu'il est disponible sur la plupart des serveurs hébergeant des sites.

Possibilités[modifier | modifier le wikicode]

Si vous êtes déjà allés sur un site qui vous demandait de vous connecter, vous avez utilisé un script côté serveur. Ce script était certainement écrit en PHP, en raison de la popularité de ce dernier. PHP transforme une page statique (fichier HTML par exemple), en une suite d'instructions interprétables par PHP, installée sur un serveur Web comme Apache - ça peut-être simplement un "Hello World" 50 fois dans une colonne, ou une interaction avec un système de base de données, comme MySQL, fréquemment couplé à PHP.

Liens externes[modifier | modifier le wikicode]


Installer PHP

Unix[modifier | modifier le wikicode]

Sous une distribution Gentoo[modifier | modifier le wikicode]

Premièrement il faut installer Apache si ce n'est pas déjà fait :

emerge apache

Ensuite, il faut installer PHP :

emerge dev-lang/php

Puis il faut qu'apache utilise PHP dans sa configuration.

Code: Configuration de apache
# nano -w /etc/conf.d/apache2
APACHE2_OPTS="-D PHP5"

Installation avec la distribution Debian[modifier | modifier le wikicode]

PHP peut-être installé avec toutes les déclinaisons de la distribution Debian (stable, testing, unstable). Il suffit pour cela d'insérer vos lignes préférées dans le fichier /etc/apt/sources.list :

deb http://ftp.fr.debian.org/debian/ stable main non-free contrib
deb-src http://ftp.fr.debian.org/debian/ stable main non-free contrib

Ce qui suit suppose que vous ayez déjà installé votre serveur WEB (cf manuels pour l'installation d’Apache sous Debian). Par la suite, exécutez en tant que "root" les commandes suivantes :

apt-get update && apt-get install php5

Une fois ces commandes exécutées, vous devez redémarrer votre serveur WEB. Dans le cas d'Apache cela s'effectue avec la commande suivante :

/etc/init.d/apache restart

Si tout s'est bien passé, vous disposez maintenant d'un serveur WEB qui a la capacité d'exécuter des scripts PHP version 5 dans votre navigateur.

Installer MySQL[modifier | modifier le wikicode]

Voir LAMP#Installer le serveur MySQL

Windows[modifier | modifier le wikicode]

Tout en un[modifier | modifier le wikicode]

Voir Apache/Installation.

Installation manuelle[modifier | modifier le wikicode]

Nous aurons besoin des dernières versions stables de PHP et Apache, ainsi que de MySQL si vous envisagez d'utiliser cette base de données (et vous l'envisagez, non ?).

Installer PHP[modifier | modifier le wikicode]

Une fois l'archive téléchargée, décompressez-la à la racine de votre disque dur et renommez le dossier en 'PHP'. Dans le dossier PHP, vous trouverez deux fichiers: php.ini-dist et php.ini-recommended. Copiez php.ini-recommended dans votre dossier C:\Windows ou C:\winnt (le nom du dossier dépend de la version de votre système.
renommez-le en php.ini.

Ce fichier est le fichier de configuration qui contrôle les options dont vous disposerez.

Installer Apache[modifier | modifier le wikicode]

Pour installer Apache, double-cliquez sur le fichier exécutable, et suivez les instructions d'installation automatique.
Si vous installez Apache sur un ordinateur de développement, renseignez le champ "nom de domaine" avec la valeur localhost.
Si vous installez un serveur de production et que vous disposez d'un nom de domaine... Vous êtes certainement un pro et vous savez quoi faire (et je me demande ce que vous faites là); a priori, vous devriez disposer des informations nécessaires concernant votre nom de domaine, fournies par le registrar.

Une fois l'installation terminée, il faut encore indiquer à Apache qu'il doit fonctionner conjointement avec PHP, car il ne sait pas les traiter par défaut. Pour cela, il faut modifier les informations de configuration d'Apache, contenues dans le fichier httpd.conf, qui se trouve dans le dossier d'installation d'Apache, dans le sous-dossier conf. p

CGI ou module ?[modifier | modifier le wikicode]

On peut configurer Apache pour utiliser PHP comme binaire CGI, ou comme module.

L'installation en module offre de meilleures garanties en matière de sécurité, de meilleures performances, et certaines fonctionnalités absentes de l'installation en CGI. Cette installation est cependant un peu plus difficile (mais rassurez-vous, pas tellement plus que l'installation CGI), aussi nous intéresserons nous à celle-ci.

  1. Dans le répertoire de PHP, trouvez la DLL php5ts.dll, et copiez-la dans le répertoire d'Apache.
  2. Ouvrez ensuite le fichier httpd.conf. On en a déjà parlé plus tôt, vous vous souvenez où il est, n'est-ce pas ?
  3. Dans ce fichier, ajouter cette ligne qui permet à Apache de savoir que l'extension .php concerne l'utilisation du module PHP :
    AddType application/x-httpd-php .php
    
  4. Puis, ajoutez ces deux lignes qui charge et exécute (respectivement) le module PHP5 au démarrage du serveur :
    LoadModule php5_module c:\php\php5apache.dll
    
    AddModule mod_php5.c
    

Enregistrez le fichier httpd.conf et fermez-le.


Bases du langage

Intégration du code[modifier | modifier le wikicode]

Pour que PHP interprète votre code, vous devez remplir deux conditions :

  1. Votre code doit être placé dans un fichier d'extension .php (selon la configuration du serveur cela peut varier).
  2. Votre code doit être compris entre deux balises : ?php ... ? ou simplement ?... ? (il existe d'autres écritures, mais elles sont peu utilisées). Tout ce qui n'est pas compris entre ces balises n'est pas interprété par PHP :
 !DOCTYPE html 
 html 
 head 
     title Le titre de l'onglet /title 
     meta charset="utf8" / 
 /head 
 body 
     p Du texte en html /p 

    
     ? echo 'un exemple de texte en php'; ? 

     p Encore du texte en html /p 

    //Écriture recommandée et universelle
     ?php
        echo "Encore du texte en php";
    ? 

 body 
 /html 

Attention, l'utilisation des balises ? ? peut poser des problèmes de compatibilité. Il faut en effet que pour cela, la directive short_open_tags soit activée dans la configuration de l'environnement, ce qui n'est pas le cas sur la plupart des serveurs mutualisés et hébergements gratuits. Imaginez que vous changiez de serveur avec un interpréteur qui ne reconnaisse pas les balises courtes, il vous faudra alors modifier les balises de chaque fichier, travail fastidieux. Il est donc conseillé de prendre l'habitude d'utiliser les balises de la forme ?php ? , reconnue universellement.

Pour regarder si votre configuration prend en compte ce type de balises, entrez le code suivant:

     ?php
        phpinfo();
    ? 


Il est possible de trouver des extensions de fichiers comme .phtml, .php3 ou autres. Il est cependant conseillé d'utiliser l'extension .php qui garantit son interprétation par PHP.

Les commentaires[modifier | modifier le wikicode]

Les commentaires sont en réalité des portions de texte qui ne seront pas interprétées par PHP et ne seront visibles que dans le code source. Ils jouent un rôle très important dans la réalisation et la mise à jour d'un script : en effet, les commentaires rendent le code plus lisible et peuvent aider les éventuelles personnes qui souhaitent retravailler votre script. Il existe trois façons différentes d'ajouter des commentaires à son script PHP :

  1. La méthode avec les symboles // pour ajouter un commentaire sur une ligne
  2. La méthode avec le sigle # pour ajouter un commentaire sur une ligne également
  3. La méthode avec les caractères /* */ pour désigner un bloc de commentaires
     ?php
    # un commentaire PHP

    // encore un commentaire PHP

    /* et encore 
    un 
    autre, 
    mais sur plusieurs lignes cette fois-ci ! */
? 

Attention! Il est important de ne pas emboîter les commentaires. exemple à ne pas suivre :

 ?php
    /*blabla /* hihi*/ blalbal*/
? 

L'interpréteur comprendra que le commentaire s'arrête à hihi*/ et il tentera d'interpréter blalbal*/. Il en résultera donc une erreur.

On peux aussi ajouter des commentaire structurer pour permettre de générer une documentation automatique via phpDocumentor. Exemple: Commentaire php ou voir le site officiel de phpDocumentor


Premier programme

Hello World[modifier | modifier le wikicode]

Écrivons notre premier programme PHP. Pour le moment nous nous contenterons d'afficher le fameux "Hello World".

 !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" 
 html 
   head 
     title Mon premier script PHP ! /title 
   /head 
   body 
     p  ?php echo 'bonjour'; ?  /p 
   /body 
 /html 

Analyse du code[modifier | modifier le wikicode]

Le code PHP est compris entre les balises ?php et ? . Celles-ci marquent respectivement le début et la fin du code PHP. Il existe plusieurs façons d'écrire ces balises php, ce qui est probablement dû au fait que PHP est un langage hybride. La notation ?php et ? est semble-t-il la dernière, et donc désormais seule et unique, façon d'introduire du PHP dans une page.


Le terme echo représente une fonction propre à php qui a pour rôle d'afficher du texte. On peut aussi utiliser la fonction print, pour un affichage de texte simple. Quant à "Hello world", il est écrit entre guillemets pour indiquer qu'il s'agit de texte. Certains préconisent l'utilisation d'apostrophes à la place des guillemets. En effet, l'utilisation des apostrophes (simple quotes) rend l'interprétation du code un peu plus rapide, qu'avec les guillemets ("double quote") et facile l'insertion du html requérant régulièrement des guillemets (comme par exemple img src=" " alt=" " / ) . Enfin, le point-virgule (;) sert à indiquer la fin de l'instruction.

Parse error[modifier | modifier le wikicode]

Il s'agit d'une erreur fréquente quand on débute en PHP. Elle est généralement due à une erreur de syntaxe. Cela peut être simplement à cause de l'omission d'un point-virgule ou bien par ce que vous avez une apostrophe qui gène.

Exemple de code erroné:

 ?php
  // Parse error assurée
  echo 'J'irais bien boire un coup.';
? 

Ne s'affichera pas, pour ce faire il faut juste mettre un antislash (\) devant notre apostrophe.

Exemple de code opérationnel:

 ?php
  // Antislash et c'est bon
  echo 'J\'irais bien boire un coup.';
? 


On peut aussi rendre plus lisible le code source en utilisant les caractères suivants:

  • \n : saut de ligne,
  • \t : tabulation,
  • \r : retour de chariot.

Attention: Ces caractères ne sont interprétés par le moteur PHP que s'ils sont introduits à l'aide de double apostrophe (guillemets) :

  echo "Retourne à la ligne\n";

Vous pouvez remarquer que l'exemple précédent est constitué de deux langages HTML et PHP, vous remarquerez aussi que le script est placé entre les balises body /body ce n'est pas une obligation ainsi le code suivant retourne la même chose:

 ?php
  $texte= 'Hello World';
? 
 !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" 
 html 
   head 
     title Mon premier script PHP ! /title 
   /head 
   body 

     ?php
      echo ($texte);
    ? 

   /body 
 /html 

Standardisation des commentaires[modifier | modifier le wikicode]

Les commentaires sont très utiles aux programmeurs, mais se révèlent surtout indispensables lors de travail en équipe. Il existe en outre des logiciels qui génèrent une documentation complète à partir des commentaires insérés dans le code du programme. De là est apparue une certaine forme de standardisation de ceux-ci afin de faciliter la génération de documentation. Vous trouverez des exemples de codes commentés sur cette page de PEAR.

Liens[modifier | modifier le wikicode]


Variables

La Wikiversité propose un module sur « PHP/Syntaxe du langage ».

Définition[modifier | modifier le wikicode]

En PHP, les variables sont représentées par un signe dollar "$" suivi du nom de la variable, ou d'un underscore "_" pour les constantes (un warning apparait quand ces dernières sont redéfinies).

Le nom est sensible à la casse (par exemple $MaVariable est différent de $mavariable). Dans tous les cas, les variables doivent commencer par une lettre (a-z, A-Z) :

     $1MaVariable // incorrect
     $MaVariable  // correct
     $_MaVariable // correct
     $àéè         // correct
     _MaVariable  // correct

Exemple[modifier | modifier le wikicode]

   ?php
  // Initialisation des variables
  $Prenom = 'Romuald';
  $Age    = '23 ans';
  $Profession = 'informaticien';

  // Affichage
   echo 'Bonjour ' . $Prenom . ', tu as ' . $Age . ' et ta profession est ' . $Profession . '.';
  // Ce qui affichera sur votre navigateur : Bonjour Romuald, tu as 23 ans et ta profession est informaticien.

  // Une autre manière de faire
  echo "Bonjour $Prenom, tu as $Age et ta profession est $Profession";
  // Ce qui affichera sur votre navigateur : Bonjour Romuald, tu as 23 ans et ta profession est informaticien.

  // Subtilité des " et des '
  echo 'Bonjour $Prenom, tu as $Age et ta profession est $Profession';
  // Ce qui affichera sur votre navigateur : Bonjour $Prenom, tu as $Age et ta profession est $Profession
  // Le contenu d'une chaîne construite avec des " sera interprété par PHP et les variables
  // éventuellement utilisées seront remplacées par leurs valeurs.
  ? 

Nota bene: Une variable accolée à du texte est précédée d'un point. Ce dernier sert à la concaténation et dans le cas présent est surtout utile pour indiquer à l'interpréteur que l'on passe du texte, puis à une variable. On lui évite ainsi un temps de réflexion qu'il aurait si l'on avait écrit :

echo "Bonjour $Prenom, tu as $Age et ta profession est $Profession";

Rappel : Le caractère ";" indique qu'il s'agit d'une fin de commande, sans celui-ci l'interpréteur PHP ne comprend pas quand se trouve la fin d'une instruction. Le " ?php" et "? " indique respectivement qu'il s'agit d'un début de code en PHP et de sa fin.

Types de variables[modifier | modifier le wikicode]

Contrairement à de nombreux langages de programmation, en PHP il ne faut pas prédéclarer une variable mais celle-ci est typée lors de son instanciation.

$x=1 indique que $x est un entier
$mot='test' indique que $mot est une chaîne

En PHP il y a donc 4 types de variables scalaires

  • entiers : nombres naturels sans décimale (sans virgule)
  • réels : nombres décimaux (on parle généralement de type double, car il s'agit de nombre décimaux à double précision)
  • chaînes de caractères : ensembles de caractères
  • booléens (true ou false où true = vrai et false = faux en français)

Tableaux[modifier | modifier le wikicode]

En PHP les tableaux sont de type array et leurs contenus peuvent être tous les types de variables possibles.

 $tab[0] = 1;
 $tab[1] = 'test'; //fonctionne aussi
Il en est de même pour les tableaux à deux dimensions.
 $tab[0][0]= 'test';
 $tab[0][1]= 0.0; //réel

En php il est possible d'accéder au contenu d'un tableau de différentes manières :

  • par l'indice ;
  • par la clé.

Création d'un tableau par indice[modifier | modifier le wikicode]

 $tab = array ("mixte valeur sub 1 /sub ","mixte valeur sub 2 /sub ","...","mixte valeur sub n /sub ");
 echo key($tab);
 echo ' : ';
 echo current($tab);

Affiche 0 : mixte valeur1

Les fonctions key() et current() peuvent accéder aux autres éléments du tableau après each() ou next().

Il existe aussi différentes méthodes liées aux tableaux, des méthodes de tri, de recherche, de concaténation de tableaux, des méthodes d'ajouts et de suppressions d'éléments, etc.

Création d'un tableau par clé[modifier | modifier le wikicode]

 $tab = array ("cle1" =  "valeur1", "cle2" =  "valeur2", "...", "clen" =  "valeurn");
 echo key($tab);
 echo ' : ';
 echo current($tab);

Affiche cle1 : valeur1

Variables dynamiques[modifier | modifier le wikicode]

Il est pratique d'avoir parfois des noms de variables qui sont variables. C'est-à-dire un nom de variable qui est affecté et utilisé dynamiquement. La valeur MaVariable est affectée à une variable classique appelée a avec l'instruction suivante :

  ?php
   $a="MaVariable";
 ? 

Une variable dynamique utilise le nom d'une autre variable. Dans l'exemple ci-dessous, la valeur bonjour est affectée à la variable dynamique $$a, c'est-à-dire à une variable dont le nom est la valeur $a de la variable a. La variable classique a contient la valeur MaVariable donc le code :

  ?php
   $$a="bonjour";
 ? 

est équivalent à : $MaVariable="bonjour";

Autres variables[modifier | modifier le wikicode]

Les variables présentées dans ce paragraphe sont des tableaux indicés par le nom de la valeur accédée (une chaîne de caractère).

Variables d'environnement[modifier | modifier le wikicode]

Accessibles par $_ENV, cette variable est une 'superglobale', ou globale automatique. Cela signifie qu'elle est simplement disponible dans tous les contextes d'exécution (fonctions ou méthodes).

Variables globales[modifier | modifier le wikicode]

$_GLOBAL est une superglobale, l'enregistrement dans cette variable permet de récupérer la valeur n'importe quand.

Variables de sessions[modifier | modifier le wikicode]

Pour plus de détails voir : v:PHP/Sessions.

Lors de la création d'une session (session_start()), il est possible d'enregistrer des variables (par session_register('nom_variable') = $variable ). On peut aussi utiliser le tableau $_SESSION pour créer et modifier une variable de session (par exemple : $_SESSION['ma_variable'] = 3; )

Il est également possible de supprimer les sessions courantes dans le code PHP en utilisant la fonction session_destroy(). La destruction de la session en cours peut aussi se faire par la fermeture du navigateur.

Pour supprimer une variable de session sans supprimer la session entière, il suffit d'utiliser la fonction unset($_SESSION['ma_variable']).

Variables de cookie[modifier | modifier le wikicode]

Pour plus de détails voir : v:PHP/Cookies.

Le tableau $_COOKIE permet de gérer les cookies (définis avec setcookie()[1]). Ces cookies sont d'une très grande importance mais sont limités à 20 dans la configuration par défaut de PHP.

Attention !

Ne pas mettre d'informations privées (mots de passe du serveur...) dans ces variables car elles sont stockées dans un fichier non protégé, sur le disque dur de l'utilisateur.

Variables de requêtes[modifier | modifier le wikicode]

$_REQUEST est un tableau associatif constitué du contenu des variables $_GET, $_POST, $_COOKIE.

Variables de fichiers[modifier | modifier le wikicode]

Pour plus de détails voir : v:PHP/Fichiers.

Lors d'un téléchargement de fichiers vers le serveur, une variable est assignée aux données de ce fichier. Il s'agit de $_FILES. Elle permet de récupérer le nom du fichier envoyé (exemple : mon_image.png), le nom du fichier temporaire où PHP a copié les données et où il est donc possible de les lire (exemple: C:\temp\T0001AF7.tmp).

Exemple :

 $_FILES['nom_fichier']

Variables de serveurs[modifier | modifier le wikicode]

$_SERVER permet d'obtenir des renseignements sous forme d'un tableau sur le serveur.

'PHP_SELF'
Le nom du fichier du script en cours d'exécution, par rapport à la racine web. Par exemple, $_SERVER['PHP_SELF'] dans le script situé à l'adresse http://www.monsite.com/test.php/foo.bar sera /test.php/foo.bar. La constante __FILE__ contient le chemin complet ainsi que le nom du fichier courant.
'argv'
Tableau des arguments passées au script. Lorsque le script est appelé en ligne de commande, cela donne accès aux arguments, comme en langage C. Lorsque le script est appelé avec la méthode GET, ce tableau contiendra la chaîne de requête.
'argc'
Contient le nombre de paramètres de la ligne de commande passés au script (si le script fonctionne en ligne de commande).
'GATEWAY_INTERFACE'
Numéro de révision de l'interface CGI du serveur : i.e. ' CGI/1.1 '.
'SERVER_NAME'
Le nom du serveur hôte qui exécute le script suivant. Si le script est exécuté sur un hôte virtuel, ce sera la valeur définie pour cet hôte virtuel.
'SERVER_SOFTWARE'
Chaîne d'identification du serveur, qui est donnée dans les en-têtes lors de la réponse aux requêtes.
'SERVER_PROTOCOL'
Nom et révision du protocole de communication : i.e. ' HTTP/1.0 ';
'REQUEST_METHOD'
Méthode de requête utilisée pour accéder à la page; i.e. ' GET ', ' HEAD ', ' POST ', ' PUT '.
'REQUEST_TIME'
Le temps Unix depuis le début de la requête. Disponible depuis PHP 5.1.0.
'QUERY_STRING'
La chaîne de requête, si elle existe, qui est utilisée pour accéder à la page.
'DOCUMENT_ROOT'
La racine sous laquelle le script courant est exécuté, comme défini dans la configuration du serveur.
'HTTP_ACCEPT'
Contenu de l'en-tête Accept: de la requête courante, s'il y en a une.
'HTTP_ACCEPT_CHARSET'
Contenu de l'en-tête Accept-Charset: de la requête courante, si elle existe. Par exemple : ' iso-8859-1,*,utf-8 '.
'HTTP_ACCEPT_ENCODING'
Contenu de l'en-tête Accept-Encoding: de la requête courante, si elle existe. Par exemple : ' gzip '.
'HTTP_ACCEPT_LANGUAGE'
Contenu de l'en-tête Accept-Language: de la requête courante, si elle existe. Par exemple : ' fr '.
'HTTP_CONNECTION'
Contenu de l'en-tête Connection: de la requête courante, si elle existe. Par exemple : ' Keep-Alive '.
'HTTP_HOST'
Contenu de l'en-tête Host: de la requête courante, si elle existe.
'HTTP_REFERER'
L'adresse de la page (si elle existe) qui a conduit le client à la page courante. Cette valeur est affectée par le client, et tous les clients ne le font pas. Certains navigateur permettent même de modifier la valeur de HTTP_REFERER sous forme de fonctionnalité. En bref, ce n'est pas une valeur de confiance.
'HTTP_USER_AGENT'
Contenu de l'en-tête User_Agent: de la requête courante, si elle existe. C'est une chaîne qui décrit le client HTML utilisé pour voir la page courante. Par exemple : Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586). Entre autres choses, vous pouvez utiliser cette valeur avec get_browser pour optimiser votre page en fonction des capacités du client.
'HTTP_header'
Valeur de l'en-tête HTTP correspondant envoyé dans la requête du client.
'HTTPS'
Définissez à une valeur non-vide si le script nécessite d'utiliser le protocole HTTPS.
'REMOTE_ADDR'
L'adresse IP du client qui demande la page courante.
'REMOTE_HOST'
Le nom de l'hôte qui lit le script courant. La résolution DNS inverse est basée sur la valeur de REMOTE_ADDR
'REMOTE_PORT'
Le port utilisé par la machine cliente pour communiquer avec le serveur web.
'SCRIPT_FILENAME'
Le chemin absolu vers le fichier contenant le script en cours d'exécution.
'SERVER_ADMIN'
La valeur donnée à la directive SERVER_ADMIN (pour Apache), dans le fichier de configuration. Si le script est exécuté par un hôte virtuel, ce sera la valeur définie par l'hôte virtuel.
'SERVER_PORT'
Le port de la machine serveur utilisé pour les communications. Par défaut, c'est '80'. En utilisant SSL, par exemple, il sera remplacé par le numéro de port HTTP sécurisé.
'SERVER_SIGNATURE'
Chaîne contenant le numéro de version du serveur et le nom d'hôte virtuel, qui sont ajoutés aux pages générées par le serveur, si cette option est activée.
'PATH_TRANSLATED'
Chemin dans le système de fichier (pas le document-root) jusqu'au script courant, une fois que le serveur a fait une traduction chemin virtuel - réel.
'SCRIPT_NAME'
Contient le nom du script courant. Cela sert lorsque les pages doivent s'appeler elles-mêmes. La constante __FILE__ contient le chemin complet ainsi que le nom du fichier (i.e. inclut) courant.
'REQUEST_URI'
L'URI qui a été fourni pour accéder à cette page. Par exemple : ' /index.html '.
'PHP_AUTH_DIGEST'
Lorsque vous utilisez PHP avec Apache en tant que module faisant une identification HTTP Digest cette variable est définie dans l'en-tête 'Authorization' envoyé par le client (que vous devez donc utiliser pour réaliser la validation appropriée).
'PHP_AUTH_USER'
Lorsque vous utilisez PHP avec Apache ou IIS (ISAPI en PHP 5) en tant que module faisant une identification HTTP, cette variable est définie à l'utilisateur fourni par l'utilisateur.
'PHP_AUTH_PW'
Lorsque vous utilisez PHP avec Apache ou IIS (ISAPI en PHP 5) en tant que module faisant une identification HTTP, cette variable est définie au mot de passe fourni par l'utilisateur.
'AUTH_TYPE'
Lorsque vous utilisez PHP avec Apache en tant que module faisant une identification HTTP, cette variable est définie au type d'identification.

Références[modifier | modifier le wikicode]

  1. http://www.php.net/manual/fr/function.setcookie.php


Constantes

Tout comme en C, PHP peut utiliser des variables dont on précise la valeur une fois pour toute et qui ne pourra être modifiée jusqu'à la fin de l'exécution du code.

Généralités[modifier | modifier le wikicode]

Nom[modifier | modifier le wikicode]

Le nom d'une constante suit les mêmes règles que celles pour les variables, mis à part que le nom d'une constante n'est pas précédé par $.

 ?php
// Noms valides
CONSTANTE1
CONSTANTE2
CONSTANTE_plus

// Noms invalides
0CONSTANTE

? 

Déclaration[modifier | modifier le wikicode]

Pour déclarer une constante, on utilise la fonction define() (depuis PHP3) qui renvoie un booléen true en cas de réussite de déclaration et false en cas d'échec.

La syntaxe de define est la suivante :

define(chaine_de_caractere, valeur);

La chaîne de caractère est le nom de la constante, pouvant contenir lettre, tiret, underscore et chiffre (la première lettre de la chaîne est une lettre dans [a-zA-Z]).

Utilisation[modifier | modifier le wikicode]

L'utilisation est similaire à celle des variables.

 ?php
  define("CONSTANTE", "Texte ici");
  echo CONSTANTE; // affiche "Texte ici"
? 

En PHP5, la déclaration de constantes à l'intérieur d'une classe peut se faire avec le mot-clé const de la façon suivante :

 ?php
  class MaClasse {
    const CONSTANTE = "Texte ici";
    
    function afficher()
    {
      echo CONSTANTE;
    }
  }
  $instance = new MaClasse;
  $instance- afficher();
? 

Informations supplémentaires[modifier | modifier le wikicode]

Type de données[modifier | modifier le wikicode]

Une constante, si elle peut être de type booléen, entier, nombre à virgule flottante ou chaîne de caractère, ne peut en aucun cas être un tableau ou un objet. Elle est donc forcément scalaire.

  ?php
 // Le code suivant va générer une erreur
 define ("CONSTANTE", array("a", "b", "c"));
 echo CONSTANTE;
 ? 

Unicité de la déclaration[modifier | modifier le wikicode]

La redéclaration d'une constante portant le même nom est ignorée, et la valeur de la première déclaration reste valable.

  ?php
 define ("CONSTANTE", "première définition");
 define ("CONSTANTE", "deuxième définition"); // ignoré
 echo CONSTANTE; // retournera toujours "première définition"
 ? 

Conflit de nom[modifier | modifier le wikicode]

Il existe des constantes intégrées à PHP, or on ne peut créer une constante portant leurs noms, cela entraînerait une erreur. En général, évitez la syntaxe suivante pour le nom d'une variable ou d'une constante :

__NOM__

Constantes intégrées[modifier | modifier le wikicode]

Il en existe de deux types :

  • fixes en valeur
  • dont la valeur est dynamique

Constantes intégrées à valeur fixe[modifier | modifier le wikicode]

Les constantes suivantes ont des valeurs fixes, comme celles définies avec define :

  • TRUE : vrai (booléen).
  • FALSE : faux (booléen).
  • PHP_VERSION : version de PHP du serveur exécutant le script.
  • PHP_OS : nom du système d'exploitation du serveur exécutant le script.

Constantes intégrées à valeur dynamique[modifier | modifier le wikicode]

Les constantes parfois dites "magiques":

  • __FILE__ : retourne le chemin complet (exemple: /la/ou/est/le/fichier.php) du fichier qui est actuellement exécuté par le serveur.
  • __LINE__ : retourne la ligne du fichier qui est actuellement exécuté par le serveur.
  • __FUNCTION__ : retourne le nom de la fonction dans laquelle on se trouve.
  • __CLASS__ : retourne le nom de la classe dans laquelle on se trouve.

Exemple:

 ?php
echo 'Fichier: ' . __FILE__ . "\n";
echo 'Ligne: ' . __LINE__ . "\n";

class test {
 function foo() {
    echo 'Fonction: ' . __FUNCTION__ . "\n";
    echo 'Classe: ' . __CLASS__ . "\n";
 }
}
test::foo();
// ou alors
$test = new test();
$test- foo();
? 

Qui affichera:

Fichier: /home/ze/toto.php
Ligne: 3
Fonction: foo
Classe: test
Fonction: foo
Classe: test

L'affichage de la première ligne, par exemple, dépend d'où est situé le fichier dans l'arborescence des fichiers.

Liens externes[modifier | modifier le wikicode]


Opérateurs

Les opérateurs sont des symboles qui permettent de manipuler les variables.

Opérateurs arithmétiques[modifier | modifier le wikicode]

  • = Opérateur d'affectation
 ?php
$un_chiffre = 4; //affectation de l'entier 4 à la variable un_chiffre
$un_mot = 'je suis fan des pâtes'; //affectation de la chaîne de caractères à la variable "un_mot"
? 
  • + : Opérateur d'addition
 ?php
$mon_premier_chiffre = 3; //affectation du premier chiffre
$mon_deuxieme_chiffre = 4; //affectation du deuxieme chiffre
$resultat = $mon_premier_chiffre + $mon_deuxieme_chiffre; //affectation de l'addition des deux chiffres
echo $resultat; //affiche 3+4 soit 7
? 
  • - Opérateur de soustraction
 ?php
$mon_premier_chiffre = 3; //affectation du premier chiffre
$mon_deuxieme_chiffre = 4; //affectation du deuxieme chiffre
$resultat = $mon_premier_chiffre - $mon_deuxieme_chiffre; //affectation de la soustraction des deux chiffres
echo $resultat; //affiche 3-4 soit -1
? 
  • * Opérateur de multiplication
 ?php
$mon_premier_chiffre = 3; //affectation du premier chiffre
$mon_deuxieme_chiffre = 4; //affectation du deuxieme chiffre
$resultat = $mon_premier_chiffre * $mon_deuxieme_chiffre; //affectation de la multiplication des deux chiffres
echo $resultat; //affiche 3*4 soit 12
? 
  • / Opérateur de division
 ?php
$mon_premier_chiffre = 3; //affectation du premier chiffre
$mon_deuxieme_chiffre = 4; //affectation du deuxieme chiffre
$resultat = $mon_premier_chiffre / $mon_deuxieme_chiffre; //affectation de la division des deux chiffres
echo $resultat; //affiche 3/4 soit 0,75
? 
  • % Opérateur modulo
 ?php
$mon_premier_chiffre = 3; //affectation du premier chiffre
$mon_deuxieme_chiffre = 4; //affectation du deuxieme chiffre
$resultat = $mon_premier_chiffre % $mon_deuxieme_chiffre; //affectation du modulo  des deux chiffres
echo $resultat; //affiche 3 modulo 4 soit 3 (le modulo est le reste de la division euclidienne (sans virgule) )
? 

Il sert à tester si un nombre est le multiple d'un autre :

 ?php
if ($nb % 3 == 0) { 
 // $nb est un multiple de trois
}
? 

Opérateurs logiques booléens[modifier | modifier le wikicode]

Les opérateurs logiques agissent sur les types booléens (true ou false).

  • ! Négation : false - true et true - false
  • && Opérateur et (and)
  • || Opérateur ou (or)

Opérateurs logiques bit à bit[modifier | modifier le wikicode]

Les opérateurs logiques bit à bit agissent sur chaque bit des valeurs entières.

  • ~ Négation : 0 - 1 et 1 - 0
  • & Opérateur et (and)
  • | Opérateur ou (or)
  • ^ Opérateur ou exclusif (xor)

Opérateur d'assignation[modifier | modifier le wikicode]

Ils permettent de simplifier l'écriture des assignations

  • += additionne deux valeurs et stocke le résultat dans la variable ($x+=5 équivaut à $x=$x+5)
  • -= soustrait deux valeurs et stocke le résultat dans la variable ($x-=5 équivaut à $x=$x-5)
  • *= multiplie deux valeurs et stocke le résultat dans la variable ($x*=5 équivaut à $x=$x*5)
  • /= divise deux valeurs et stocke le résultat dans la variable ($x/=5 équivaut à $x=$x/5)
  • %= donne le reste de la division de deux valeurs et stocke le résultat dans la variable ($x%=5 équivaut à $x=$x%5)
  • |= effectue un OU logique entre deux valeurs et stocke le résultat dans la variable ($x|=5 équivaut à $x=$x|5)
  • ^= effectue un OU exclusif entre deux valeurs et stocke le résultat dans la variable ($x^=5 équivaut à $x=$x^5)
  • &= effectue un ET logique entre deux valeurs et stocke le résultat dans la variable ($x&=5 équivaut à $x=$x&5)
  • .= concatène deux chaînes et stocke le résultat dans la variable ($x.='test' équivaut à $x=$x.'test')

Opérateur d'incrémentation[modifier | modifier le wikicode]

  • ++ : incrémente de 1 la valeur de la variable si $x=1, $x++ vaut 2
  • -- : décrémente de 1 la valeur de la variable si $x=2, $x-- vaut 1

Ces opérateurs sont très utiles dans les boucles (notamment for).

Opérateur de comparaison[modifier | modifier le wikicode]

  • == renvoie un booléen pour indiquer l'égalité (ce n'est pas =) : $x == 1 teste si la valeur $x est égale à 1.
  • = renvoie un booléen pour indiquer la supériorité-égalité si $x = 1 teste si la valeur $x est supérieure ou égale à 1.
  • = renvoie un booléen pour indiquer l'infériorité-égalité si $x = 1 teste si la valeur $x est inférieure ou égale à 1.
  • renvoie un booléen pour indiquer la supériorité stricte si $x 1 teste si la valeur $x est strictement supérieure à 1.
  • renvoie un booléen pour indiquer l'infériorité stricte : $x 1 teste si la valeur $x est strictement inférieure à 1.
  • != renvoie un booléen pour indiquer la différence : $x != 1 teste si la valeur $x est différente de 1.
  • === renvoie un booléen pour indiquer l'égalité à la fois de la valeur et du type.
  • !== renvoie un booléen pour indiquer la différence ou de la valeur ou du type.

Opérateur divers[modifier | modifier le wikicode]

Opérateur ternaire[modifier | modifier le wikicode]

L'opérateur ? permet de renvoyer une valeur ou une autre en fonction d'un test. Par exemple:

$appreciation=($note 10)?"bon":"mauvais";

qui est strictement équivalent au bloc PHP suivant:

if ($note 10)
$appreciation="bon";
else
$appreciation="mauvais";


Structures de contrôle

Une structure conditionnelle fonctionne de manière à ce que si la valeur de la condition est TRUE alors tel schéma est appliqué, et si la valeur est FALSE, un autre schéma est réalisé.

Les structures conditionnelles[modifier | modifier le wikicode]

if - else[modifier | modifier le wikicode]

La structure la plus simple se présente sous la forme d'un if() {} et d'un else {}. Le if teste une condition :

  • Si elle est réalisée le code entre les accolades après le if sera exécuté, puis le serveur passera au code après le else {} ;
  • Si elle n'est pas réalisée c'est ce qui est entre les accolades suivant le else qui sera exécuté.
 ?php
if (condition) { 
 instruction au cas  la condition serait réalisée;
} 
else {
 instruction au cas  la condition ne serait pas réalisée;
}
? 

Emploi de if seul[modifier | modifier le wikicode]

Un if peut être employé seul, en fait le else étant l'alternative, le code à exécuter par défaut, on peut s'en passer pour n'exécuter un code seulement si une condition est réalisée.

 ?php
if (condition) {
 instruction au cas  la condition est réalisée;
}
//si la condition n'est pas réalisée, il ne se passe rien
? 

Emploi de elseif[modifier | modifier le wikicode]

Lorsqu'une condition n'est pas réalisée, plutôt que de passer directement à l'exécution du code par défaut (déclaré par else), il peut être plus judicieux de tester une autre condition (déclarée par elseif). En clair la structure est similaire à un ordre de préférence :

Emploi de elseif
Symboliquement Traduction en code
Soit une condition 1

La condition 1 est elle réalisée ?
OUI 
 code 1 (puis sortie de la structure hypothétique)
NON
 la condition 2 est elle réalisée ?
OUI
 code 2 (puis sortie de la structure hypothétique)
NON
 la condition 3 est elle réalisée ?
OUI
 code 3 (puis sortie de la structure hypothétique)
NON

...

(aucune des conditions annexes n'ont été vérifiées)
Par défaut exécutons le code défaut

 ?php
condition 1

if(condition 1)
{ code 1; }
elseif(condition 2)
{ code 2; }
elseif(condition 3)
{ code 3; }

...

else
{ code par défaut; }
? 

Imbrication[modifier | modifier le wikicode]

On peut imbriquer les if les uns dans les autres. Simplement lorqu'un if imbriqué aura fini d'être exécuté, il retournera à l'étape logique suivante du rang hiérarchique supérieur.

 ?php

if() {

 if() { }
 elseif() { }
 else { }

}
elseif() {}
else {}

? 

Notons que dans ce cas mieux vaut imaginer tous les cas de figure pour ne pas se retrouver avec une structure hypothétique vacillante en ce que la situation n'aura pas été prévue.

switch[modifier | modifier le wikicode]

Lorsque l'on teste des conditions en nombre important sur une même valeur, l'utilisation de if est fastidieuse. Il existe bien heureusement une structure créée à cet usage : le switch. On déclare la variable à tester avec switch : switch($surlasellette) {}. Dans ce switch on utilise case pour déclarer la valeur de la variable pour laquelle une action est envisagée : case "valeur" : (ici ne pas oublier les deux points !) une suite d'instructions s'ensuit et est généralement clôturée par break; pour que les autres cas ne soient pas traités à la suite. La valeur par défaut, corollaire du else pour if, est introduite par default :.

Intérêt et emploi de switch
Avec if Traduction en switch
 ?php 

$valeur = "testable";
if($valeur == "ce n'est pas cela") 
{echo "ok";}
elseif($valeur == "ce n'est pas non plus cela") 
{echo "ok";}
elseif($valeur == "c'est encore moins cela") 
{echo "ok";}
else
{echo "pas d'accord";}
? 
 ?php

switch (variable)
{
case valeur_1 :
instruction(s);
break;
 
case valeur_2 :
instruction(s);
break;

...

default : 
instruction(s);
}

switch s'imbrique aussi comme if. Le plus important étant de ne pas oublier de mettre l'instruction break avant un nouveau case.

Les boucles[modifier | modifier le wikicode]

Une boucle est une instruction qui exécute un code tant qu'une condition établie est vérifiée. Si la condition est toujours vérifiée, on se trouve dans une boucle infinie. Les boucles permettent le parcours des tableaux et d'utiliser des données rendues sous la forme de tableau par une fonction de php dialoguant par exemple avec un autre langage. Il en existe de 3 types :

  • while() { }
  • for() {}
  • foreach() {}

while[modifier | modifier le wikicode]

while est un mot anglais signifiant "tant que" en français. Le programme exécute une routine tant que la condition est vraie.

 ?php
while (condition) {
instructions(s);
}
? 

for[modifier | modifier le wikicode]

for est un mot anglais signifiant "pour" en français. Le programme exécute une routine pour des valeurs d'une variable qui vérifient une certaine condition. Généralement cette condition est de type "intervalle", c'est-à-dire pour des valeurs plus petites qu'une borne.

for (premier élément ; deuxième élément ; troisième élément)
{instruction;}
  • Le premier élément est exécuté au début de la boucle dans tous les cas.
  • Le second élément (la condition) est testé avant chaque exécution de l'instruction ou itération, s'il renvoie TRUE l'instruction sera exécutée, si FALSE est renvoyé on sort de la boucle.
  • La dernière expression est exécutée après chaque itération.
 ?php

for(première expression; seconde expression; troisième expression) {
instruction;
}
? 

Attention la structure dans la parenthèse est for( ; ; )

foreach[modifier | modifier le wikicode]

Les boucles foreach constituent une manière simple de parcourir des tableaux. Il existe 2 syntaxes :

  • La plus simple s'intéresse aux clés dans les tableaux. Le type de ces clés dépend des valeurs contenues dans le tableau. foreach simplifie une tache qui aurait certes été possible avec for, mais fastidieuse :
Intérêt de foreach
Avec for Avec foreach
 ?php
$array = array('valeur1', 'valeur2', 'valeur3');
for($i = 0; $i   count($array); $i++) { 
echo $array[$i]; //renvoie "valeur1valeur2valeur3"
}
? 
 ?php
$array = array('valeur1', 'valeur2', 'valeur3');
foreach($array as $value) { 
echo $value; //renvoie "valeur1valeur2valeur3"
}
? 

as signifiant "comme", on récupère une variable contenant la valeur dans la cellule correspondante.

  • La seconde se penche d'avantage sur les tableaux associatifs du type
 ?php
$array = array( "ville" =  "Montargis", "température" =  "15 degrés" );
? 

Ainsi on récupère le nom de la clé et la valeur du champ. En fait la structure $cle = $valeur est celle de la déclaration de l'array.

 ?php

foreach($array as $cle =  $valeur) {
commandes;
}
? 

Il est possible d'itérer des objets depuis PHP 5.


Bases de données

Soit la base de données BDDNAME contenant la table NOMTABLE. Voici la table :

  • ID : id
  • NOM : chaine de caractères
  • PRENOM : chaine de caractères
  • ADRESSE1 : chaine de caractères
  • ADRESSE2 : chaine de caractères
  • TEL1 : entier long
  • TEL2 : entier long

Cette base de données contient les deux enregistrements suivants :


0 "DUPOND" "LOUIS" "1,Petite rue" "2,Petite rue" 0543454654 0543454352
1 "DUSS" "Jean-Claude" "1,Grande rue" "2, Grande rue" null null


MySQL[modifier | modifier le wikicode]

Constantes propres à la base utilisées par la suite :

Nom de la BDD : "BDDNAME"
Adresse de la BDD : "BDDADRESSE"
Login d'accès à la BDD : "BDDUSER"
Mot de passe pour accéder à la BDD : "BDDPASS"
Exemple d'accès à une base de données MySQL
 ?
$user="BDDUSER";
$pass="BDDPASS";
$db="BDDNAME";
$table="demande_intervention";
$link=mysql_connect("localhost",$user,$pass); // Préproduction locale de BDDADRESSE
if (!$link)
die("Impossible de se connecter à mysql");
mysql_select_db($db,$link)
or die ("Impossible d'ouvrir $db :".mysql_error());
$query="insert into $table values($znom,$ztel,$znomach,zlieu,zdate)";
mysql_query($query,$link)
or die("Impossible d'ajouter des nouvelles données".mysql_error());
mysql_close($link);
? 

Exécution d'une requête sur une base de données MySQL[modifier | modifier le wikicode]

Maintenant que nous sommes connectés à notre base de données, il est possible d’exécuter des requêtes dessus. En voici un exemple

Exploiter une requête de type SELECT (avec mysql_fetch_assoc)
    $requete = "SELECT * FROM NOMTABLE";
    $res = mysql_query($requete);
    //On obtient alors tous les enregistrements présents dans la table nom table, et pour exploiter les enregistrements, on peut boucler de la manière        suivante :
    while ($enregistrement = mysql_fetch_assoc ($res) ) {
        $nom = $enregistrement['NOM'];
        $prenom = $enregistrement['PRENOM'];
        $adresse1 = $enregistrement['ADRESSE1'];
        $adresse2= $enregistrement['ADRESSE2'];
        $tel1 = $enregistrement['TEL1'];
        $tel2 = $enregistrement['TEL2'];
    }

De cette manière on récupère un tableau associatif sous la forme Clé- Valeur pour chacun des enregistrements retournés par la requête.

Il existe d'autres méthodes...

  • mysql_num_rows () : retourne le nombre de lignes données par la requête;
  • mysql_fetch_row () : identique à mysql_fetch_assoc mais retourne un tableau simple indice- valeur.
  • mysql_fetch_object () : identique à mysql_fetch_assoc mais retourne un objet.

Exemple :

Exploiter une requête de type SELECT (avec mysql_fetch_object)
    $requete = "SELECT * FROM NOMTABLE";
    $res = mysql_query($requete);

    while ($enregistrement = mysql_fetch_object ($res) ) {
       $nom = $enregistrement- NOM;
       $prenom = $enregistrement- PRENOM;
       $adresse1 = $enregistrement- ADRESSE1;
       $adresse2= $enregistrement- ADRESSE2;
       $tel1 = $enregistrement- TEL1;
       $tel2 = $enregistrement- TEL2;

Fermeture d'une connexion à la base de données MySQL[modifier | modifier le wikicode]

 //Ferme la connexion MySQL
 mysql_close ($ressource);

SQLite[modifier | modifier le wikicode]

SQLite est le moteur de base de données intégré à PHP5.

Se connecter à une base de données SQLite[modifier | modifier le wikicode]

// On se connecte à la base
// CHEMIN_BDD constitue de chemin physique de la base de données
$db = new SQLiteDatabase(CHEMIN_BDD);

Exécution d'une requête sur une base de données SQLite[modifier | modifier le wikicode]

Maintenant que nous sommes connectés à notre base de données, il est possible d’exécuter des requêtes dessus. En voici un exemple

$requete = "SELECT * FROM NOMTABLE";
$res = $db- arrayQuery ($requete, SQLITE_ASSOC);

On obtient alors tous les enregistrements présents dans la table nom table, et pour exploiter les enregistrements, on peut boucler de la manière suivante :

foreach($res as $enregistrement) {
    $nom = $enregistrement['NOM'];
    $prenom = $enregistrement['PRENOM'];
    $adresse1 = $enregistrement['ADRESSE1'];
    $adresse2= $enregistrement['ADRESSE2'];
    $tel1 = $enregistrement['TEL1'];
    $tel2 = $enregistrement['TEL2'];
}

De cette manière on récupère un tableau associatif sous la forme Clé- Valeur pour chacun des enregistrements retournés par la requête. C'est la constante SQLITE_ASSOC qui permet cela. La constante SQLITE_NUM permet de retourner un tableau indexé numériquement. Il existe d'autres méthodes...

  • numRows () : retourne le nombre de lignes données par la requête.

MS-SQL[modifier | modifier le wikicode]

Pour plus de détails voir : v:PHP/Base de données.

Oracle[modifier | modifier le wikicode]

Voir aussi[modifier | modifier le wikicode]


==


La programmation orientée objet

La programmation orientée objet[modifier | modifier le wikicode]

Pré requis : maîtrise des bases du PHP

Un objet est un format complexe de variable regroupant des variables et des fonctions. La programmation orientée objet s’effectue en deux étapes : la définition des classes, puis leur utilisation. Une fois la classe définie, il sera possible de créer une infinité d’objets du format de la classe définie.

Les fonctions d’une classe sont appelées les méthodes et les variables les propriétés.

Définition des classes[modifier | modifier le wikicode]

Définir une classe adopte la syntaxe suivante :

class nomObjet
{
  var $variable1;
  var $variable2;
  ...


  function maFonction1()
  {
    ...code
  }

  function maFonction2()
  {

  }

}

Il est possible d’attribuer une valeur par défaut. Le code dans la classe est alors var $variable1 = valeur ;

La définition de fonctions dans une classe est identique à celle de n’importe quelle fonction à la différence que lorsqu’elle fait référence à une variable de la classe, $variable doit être $this- variable. De même pour exécuter une fonction de la classe. ex :


class client
{
  var $aDitBonjour = false;


  function direBonjour()
  {
    $this- message("Bonjour");
  }

  function message($message)
  {
    echo $message;
    $this- aDitBonjour = true;
  }

}

Utilisation d’un objet[modifier | modifier le wikicode]

Attention : la classe est la définition d’un format de variable personnalisable. Le code n’est pas exécuté et il est impensable d’introduire le code suivant qui n’aurait aucun sens :

class client
{

   for ($i=0; $i 5; $i++)
   echo "$i\n";

}

Une fois la classe définie, il va falloir créer des variables objet du format de la classe définie. On crée un objet par le code suivant :

$objet = new client();

Il faut bien entendu avoir préalablement défini la classe client. La variable $objet contient donc un objet. Pour accéder à une variable pour lui faire subir des modifications, il suffit d’entrer le code suivant :

$objet- variable1 = "Hello world";

Il est possible de lui faire subir les mêmes opérations qu’à une variable normale. De même pour exécuter une fonction :

$objet- maFonction();

Autant les méthodes une fois définies ne peuvent pas être modifiées, autant il est possible d’ajouter ou de supprimer des variables dans l’objet :

$objet- variable = "valeur"; //definition de variable

unset( $objet- variable ); //supressions

L’objet est unique, de sorte que s’il est enregistré dans une autre variable et qu’une modification lui est faite, elle sera visible pour les deux variables :

//Le code reprend l'ancien script

$objet = new client();
$objet2 = $objet;
$objet2- direBonjour();
echo $objet- aDitBonjour;

//affiche true

Pour dupliquer une variable, il faut donc entrer le code suivant :

$objet2 = clone $objet;

La nouvelle variable sera différente de l’ancienne mais aura les mêmes valeurs.


Il est également possible d'exécuter la méthode d'un objet sans avoir créé de variable auparavent:

class Message
{
   function direBonjour()
   {
     echo "salut";
   }
}


/* Exécute la méthode */
Message::direBonjour();

Les méthodes prédéfinies[modifier | modifier le wikicode]

Il existe quelques méthodes pré-définies qui s’exécutent à des périodes de la vie de l’objet :

Constructeur et destructeur[modifier | modifier le wikicode]

__construct() 
Cette méthode s’exécute lors de la création de l’objet. On entre alors les attributs potentiels de la fonction lors de sa création. Cette méthode est appelée "le constructeur"
__destruct() 
Cette méthode s’exécute au contraire au moment de la destruction de la variable. Elle est appelée "le destructeur".


Attention, ces deux méthodes sont précédées de deux underscores. Voici un exemple utilisant les méthodes :

//Definition de la classe

class Humain
{
  public $homme = false;
  public $femme = false;

  function __construct($type)
  {
    if ($type=="homme")
      $this- homme=true;
    if ($type=="femme")
      $this- femme=true;
  }

  function extremeOnction()
  {
     echo 'Amen';
  }
 

  function __destruct()
  {
    $this- extremeOnction();
  }

}


//C'est un garçon !
$homme = new Humain("homme");

if ($homme- homme)
{
  echo "C'est un homme";
}
elseif ($homme- femme)
{
  echo "C'est une femme";
}

//mort de l'homme
unset($homme);


/*
La sortie sera

C'est un homme
Amen

*/

Sous php4, le constructeur avait pour nom celui de la classe. Sous php5, si la fonction __construct() n’est pas trouvée, l’interprêteur cherchera une méthode du même nom que la classe.

Copie en profondeur[modifier | modifier le wikicode]

Il existe une méthode qui s’exécute lors d’une duplication de l’objet. Son nom est __clone() ;

Magic function __get, __set, __call[modifier | modifier le wikicode]

Ces méthodes permettent de rendre dynamique l'utilisation de la classe

_get[modifier | modifier le wikicode]

Déclaration:

function __get($name) {
// contenu
}

Cette méthode a pour vocation de retourner une donnée dépendant du contenu de la variable $name. A vous de lui faire executer ce que vous voulez. Important: le contenu de la variable $name ne sera pas prioritaire sur le nom d'une variable interne à la classe. br\ Explication

class test {
public $a;
private $b;

function __construct($a,$b) {
  $this- a=$a;
  $this- b=$b;
}

function __get($name) {
  echo "On a appelé __get(\$$name)";
}

}

// utilisation
$var=new test(5,10);

echo $var- a; // affiche: 5

echo $var- b; // erreur!! b est privée et ne peut donc pas être accédée. Ce n'est pas __get qui est appelé mais l'accès à la variable en direct

echo $var- __get('a'); // affiche: "On a appelé __get($a)"

On voit ici que PHP va, en priorité, chercher de retourner une variable interne. Attention donc si celle ci est privée. Une méthode pour qu'il n'y ait pas de confusion: preceder les variables privée d'un '_'. Dans la méthode __get faire ceci:

function __get($name) {
  $temp='_'.$name;
  return $this- $temp;
}
__set[modifier | modifier le wikicode]

Déclaration:

function __set($name,$value) {
// contenu
}

Cette méthode a pour vocation de modifier une variable (quelle variable: $name) par une nouvelle valeur (laquelle: $value). En repartant de l'exemple ci-dessus, il est alors possible de l'utiliser en faisant tout simplement:

class test {
  private $_a;
  private $_b;
  function __construct($a,$b) {
    $this- _a=$a;
    $this- _b=$b;
  }
  function __get($name) {
    $temp='_'.$name;
    return $this- $temp;
  }
  function __set($name,$value) {
    $temp='_'.$name;
    $this- $temp=$value;
  }
}

$var=new test(5,10);
$var- a=6; // appelle __set('a',6)
echo $var- a; // appelle __get('a')

Héritage[modifier | modifier le wikicode]

Il est possible de faire hériter une classe des propriétés et méthodes d’une autre classe. Ex :

class parent
{
  var $varParent;

  function functionParent()
  {

  }
}

class enfant extends parent
{
  var $varEnfant;

  function functionEnfant()
  {

  }
}

L’objet enfant bénéficiera des propriétés et des méthodes de la classe parent.

Restriction d’accès[modifier | modifier le wikicode]

Il est possible depuis PHP5 d’empêcher d’accéder à une variable par un autre biais que celui d’une méthode de l’objet. Il suffit de remplacer var par private lors de la définition de la variable. De même avec une méthode :

class CompteEnBanque
{

  private $argent = 0;

  private function ajouterArgent($valeur)
  {
    $this- argent += $valeur;
  }

  function gagnerArgent($valeur)
  {
    $this- ajouterArgent($valeur);
  }
}


$compte = new CompteEnBanque()

//les actions suivantes sont impossibles:

$compte- argent = 3000;
$compte- ajouterArgent(3000);

//l'action suivante est possible

$compte- gagnerArgent(3000);

En effet, il faut gagner de l’argent avant d’en ajouter à la banque (quoique...)

Attention : ce code retournera un message d’erreur si il est exécuté sous PHP5 ou une version ultérieure

La gestion des erreurs[modifier | modifier le wikicode]

Une classe de gestion des erreurs nommée Exception est gracieusement mise à votre disposition par l’interpréteur php. Voici un exemple d’utilisation. Attention, elle n'est disponible qu'à partir de PHP5.

class Humain
{
  var $age;

  function __construct($combien)
  {
    $this- age = $combien;
   
    try
    {
      if ($this- age 0)
      throw new Exception('Un peu jeune');
      if ($this- age 200)
      throw new Exception('Un peu vieux');
    }
    catch (Exception $e)
    {
      echo $e- getMessage();
      exit();
    }
  }

}

//Retournera un message d'erreur
$humain = new Humain(700);
$humain = new Humain(-3);

//Sans erreur
$humain = new Humain(16);

Quelques fonctions intégrées[modifier | modifier le wikicode]

Voici quelques fonctions en relation avec la programmation orientée objet qui peuvent vous être utiles.

- class_exists( string )

Vérifie qu’une classe existe. Renvoie une valeur booleenne. ex :

if( class_exists('myClass'))
$var = new myClass();

- get_class_methods( class )

Retourne les méthodes d’une classe sous forme de tableau. ex :

$maClasse = new Classe();
$methods = get_class_methods( $maClasse );
print_r($methods);

- get_class_vars( class )

Retourne les variables ainsi que leurs valeurs par défaut sous forme de tableau ex :

$maClasse = new Classe();
$methods = get_class_vars( $maClasse );
print_r($methods);

Polymorphisme[modifier | modifier le wikicode]


Expression Régulière