I. Introduction▲
I-A. Remerciements▲
Je remercie particulièrement julp d’avoir pris le temps de m’aider à finaliser ce cours.
I-B. Préambule▲
PHP est un l’un des langages de script les plus actifs sur le Web. Il permet de créer principalement des pages Web HTML, mais aussi d’autres types de contenu comme des images, des animations Flash, des documents PDF, etc.
Nous allons voir comment débuter dans ce langage et quels outils, quelles méthodes peuvent nous aider dans notre progression.
PHP peut être utilisé soit comme un langage de script répondant à des besoins simples et à court terme (c’est ce qui l’a fait connaître), soit comme un langage de programmation complexe permettant de mettre en place des applications d’entreprise (programmation orientée objet, design patterns, etc.).
Certaines parties de ce cours semblent répéter ce qui est déjà documenté sur le site officiel de PHP. Je ne souhaite pas reformuler le site entier, mais aborder certains concepts à ma manière. En cas de désaccord entre mes explications et la documentation officielle, c’est cette dernière qui fait foi et je vous serais reconnaissant de m’en faire part.
I-C. Problématique▲
À l’aube de l’an 2008, il n’est plus question de faire sa « page Web perso » comme c’était la mode il y a quelques années. Le HTML statique est mort depuis longtemps, tandis qu’aujourd’hui le dynamisme a pris son envol avec AJAX (nous y reviendrons). Plus personne ne code son site directement en HTML, mais utilise plutôt des scrits qui génèrent des pages HTML selon les informations qui sont en base de données.
Un langage de script permet d’utiliser une base de données pour construire un document HTML, qui n’est donc pas nécessairement identique à chaque consultation, sans que le webmestre n’ait eu à intervenir manuellement.
Charge au développeur de choisir son langage de prédilection : ASP, JSP, PHP, RoR… Nous allons nous attacher ici exclusivement à PHP.
PHP est un langage de script, c’est-à-dire que le code est enregistré sous forme de fichier texte sur le disque dur, et qu’il est exécuté à la demande par un programme chargé de l’interpréter. C’est habituellement l’internaute (par l’intermédiaire de son navigateur Web) qui demande l’exécution d’un script lorsqu’il consulte une page Web. La demande est reçue par le serveur Web (par exemple Apache HTTPD), qui se rend compte qu’il doit la sous-traiter à PHP.
Notre objectif en tant que développeurs est de ne pas répéter le code source (ni le code HTML ni le code PHP, autant que possible). Nous allons utiliser des techniques permettant de « factoriser » le code source lorsque nous avons besoin d’un même bloc à plusieurs endroits, ainsi que d’autres techniques permettant à un collaborateur de savoir comment est structuré notre code avant même de l’avoir consulté.
I-D. Communauté▲
PHP est maintenu par une communauté ouverte d’utilisateurs dont l’auteur original, Rasmus Lerdorf, fait encore partie. Tout le monde est invité à aider dans la mesure de ses disponibilités et de ses compétences. Aider le projet peut prendre diverses formes comme la programmation du core ou d’extensions en langage C, une aide à la documentation, etc.
Les contributeurs de PHP viennent d’horizons très différents. Certains sont de simples utilisateurs du langage qui ont voulu participer à son amélioration, d’autres sont des chefs d’entreprise ou des responsables informatiques désireux de s’assurer que le langage qu’ils utilisent est maintenu ou qu’il correspond à leurs besoins, d’autres encore sont des chercheurs (IBM, etc.) souhaitant ouvrir de nouveaux horizons au langage…
La communication se fait par divers médias. Les utilisateurs finaux peuvent simplement utiliser le flux Atom des nouveautésPHP news, et ceux qui s’intéressent au fonctionnement interne de PHP peuvent s’inscrire aux mailing listsMailing lists pour PHP. Une alternative à la mailing list « PHP Internals » est de suive les Zend Weekly Summaries rédigés de main de maître par Steph FoxMaturing nicely - PHP-GTK 2 (PHP International Conference 2006).
Si vous avez besoin d’aide, vous pouvez notamment utiliser les forums PHP de DeveloppezForum d'entraide sur PHP (en français) ou les listes officiellesUsenet (en anglais), mais il en existe d’autres sur Internet. À vous de faire le choix.
Avant de participer ou de poser des questions à une communauté, apprenez-en toujours les habitudes. En effet, chaque communauté a des règles bien spécifiques, un fonctionnement unique. Entraver ces règles, ne pas comprendre ce fonctionnement peut vous placer dans des situations fâcheuses et qui feront perdre leur temps à tout le monde, vous le premier.
I-E. Outils de développement▲
Afin de commencer sur de bonnes bases, je vous propose de vous choisir un environnement de développement qui vous convient. Vous ne saurez probablement pas avec certitude que vous avez choisi le plus adapté tant que vous ne connaîtrez pas un peu PHP ; cependant, des sélections et des comparatifs ont déjà été faits, je vous propose donc de vous y reporter.
Pour le moment, le plus important est que votre éditeur sache colorer le code PHP et HTML. Le reste est secondaire, mais qu’il vous donne un accès facile à la documentation sera très appréciable. Vous pourrez changer d’éditeur à tout moment sans aucune conséquence.
Il vous faudra également installer un serveur sur votre machine de développement.
Environnements de Développement Intégré (EDI) :
- Les meilleurs éditeurs pour PHP ;
- Comparatif des meilleurs éditeurs de scripts PHP ;
- Tutoriels sur les meilleurs éditeurs de scripts PHP ;
- 400 commentaires ?
Serveurs :
- Les meilleurs serveurs « tout en 1 » (serveur Web + PHP + base de données + administration) ;
- Tutoriels sur les serveurs pour PHP.
Afin d’effectuer les tests proposés au début de ce tutoriel, décompresser l’archive de PHP devrait suffire à vous permettre d’invoquer l’exécutable « php » (ie. php.exe sous Windows) depuis la ligne de commandes en lui donnant le nom du script en paramètre (pas besoin de serveur).
I-F. Documentation▲
Le site officiel de PHP est extrêmement bien fait. La documentation de n’importe quelle fonction est accessible depuis l’URL : http://php.net/nom_de_la_fonction
N’oubliez pas de consulter les commentaires utilisateurs, car de très nombreux commentaires donnent des conseils très utiles.
Si vous utilisez Firefox, vous pouvez ajouter un mot clef de recherche en suivant ces instructions :
- Aller sur php.net ;
- Cliquez droit dans la case de recherche ;
- Sélectionnez « Ajouter un mot clef pour cette recherche… » ;
- Donnez un raccourci à votre convenance, par exemple « p », et validez la boîte de dialogue ;
- Allez dans la barre d’adresse du navigateur et tapez « p echo » : vous êtes renvoyé sur la documentation de la function echo (en français).
I-G. Utilisations de PHP▲
PHP est un langage de script qui peut être utilisé de diverses manières :
- Pour une interface Web : c’est l’utilisation la plus courante ;
- En ligne de commandes (« CLI » pour Command Line Interface) ;
- Pour produire une interface desktop (« GUI » pour Graphical User Interface).
Certains scripts prévus pour le Web peuvent parfaitement être exécutés en lignes de commandes. En revanche, les scripts GUI ont une structure totalement différente.
Il y a également divers modes d’exécution :
- Mode interprété (compilé à la volée) : c’est l’utilisation la plus courante ;
- Mode pré compilé (nécessite une extension, qui est souvent payante) ;
- Mode compilé (nécessite certaines manipulations, n’est pas adapté au Web).
La différence entre les modes d’exécution se voit principalement dans les performances du programme. En tout état de cause, le fonctionnement du programme n’est pas altéré par son exécution dans l’un ou l’autre mode.
I-G-1. Exemple Web▲
<?
xml version=
"1.0"
encoding=
"iso-8859-1"
?>
<!
DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
>
<
html xmlns
=
"
http://www.w3.org/1999/xhtml
"
xml:lang
=
"
fr-FR
"
lang
=
"
fr-FR
"
>
<
head>
<
title>
Hello World!<
/title
>
<
meta http-equiv
=
"
content-type
"
content
=
"
text/html; charset=iso-8859-1
"
/
>
<
/head
>
<
body>
<?php
if
(empty($_GET
[
'user'
]
))
{
echo htmlentities('Bonjour, invité'
,
ENT_QUOTES,
'iso-8859-1'
);
}
else
{
echo htmlentities('Bonjour, '
.
$_GET
[
'user'
],
ENT_QUOTES,
'iso-8859-1'
);
}
?>
<
/body
>
<
/html
>
http://localhost/hello-world.php
http://localhost/hello-world.php?user=Yogui
I-G-2. Exemple « CLI »▲
<?php
if
($argc
>
1
)
{
echo 'Bonjour, '
.
$argv
[
1
];
}
else
{
echo 'Bonjour, invité'
;
}
php C:\Web\hello-world.php
php C:\Web\hello-world.php Yogui
I-G-3. Exemple « GUI »▲
Je ne vais pas m’attarder sur cette utilisation, car elle est à la fois complexe et pas encore en version stable.
PHP est combiné au framework GTK pour développer des applications desktop. La dernière version de PHP-GTK est la version 1.0.2, qui utilise GTK1 et PHP4, deux versions complètement obsolètes aujourd’hui. Les bénévoles de PHP travaillent donc à une version plus intéressante, PHP-GTK2+, qui utilise GTK2+ et PHP5.
Les nouveautés promises sont très alléchantes, notamment l’arrivée de la conception objet PHP5 qui est bien plus mature que celle de PHP4. Le projet semble cependant avoir du mal à être finalisé.
Plus d’informations sur le fonctionnement de PHP-GTK dans le tutoriel par Xaviéra Autissier et Jean-Marc RichonTutoriel PHP-GTK1.