Mon premier programme en PHP

Ca y’est : vous avez décidé de changer vos pages HTML statiques en pages dynamiques. Il faut donc que vous mettiez les mains dans le cambouis, et que vous programmiez un script en PHP. Ne soyez pas intimidés, vous risquez d’être surpris par la vitesse à laquelle un développeur débutant peut prendre en main ce langage.

Comment créer un script php ?

Un script php n’est qu’un fichier texte, qui contient des instructions en langage php et/ou en langage html. Pour que le serveur Apache reconnaisse le fichier texte, le nom du fichier script doit contenir une extension qui indique qu’il s’agit d’un fichier php. En général, cette extension est .php, mais selon la configuration de votre hébergement, cela pourra être « .php3 » ou « .php4 » [1].

L’extension devenue la plus répandue depuis la version 4 est « .php ».

A quoi ressemble le code d’un script php ?

Voici deux exemples de code en php [2], qui génèrent exactement la même page HTML, qui affiche la date indiquée par l’horloge du serveur web.

<?php
echo "Voici la date indiqu&eacutee par le serveur web :";
$ladate = getdate();
$mois = $ladate['month'];
$mjour = $ladate['mday'];
$annee = $ladate['year'];
echo "$mjour/$mois/$annee";
?>

Ce code présente la manière la plus simple pour créer du code php : il s’agit d’une page HTML classique, au sein de laquelle on ajoute une portion de code PHP. L’interpréteur PHP (le « parser » à l’origine des « parse errors » qui vont vous devenir vite familières), n’interprète que le code compris entre les balise « 
<?php et "?>

« [[Il existe quatre couples de balises possibles pour délimiter une zone de code php. « 
<?php ...?>

 » « 
...

 » «  » « 
...?>

« .
seules les deux premières sont toujours reconnues, quelle que soit la configuration du serveur. Donc il est conseillé d’utiliser
<?php plutôt que (alors que cette dernière balise est sans doute la plus utilisée).
_ La balise php est obligatoire si vous utilisez le XML.

_ La balise script language='php'> devient indispensable dès que l'on touche les XSLT (en XML), pour éviter les ambiguités et les erreurs de parsing.]]. Tout ce qui est en dehors de ces balises, est considéré comme du HTML, et directement reproduit sans modification dans la page générée par le serveur web.

Le code généré (celui qui s'affiche en regardant la source dans votre browser) ressemble donc à cela :

div class="base64" title="PGRpdiBzdHlsZT0ndGV4dC1hbGlnbjogbGVmdDsnIGNsYXNzPSdzcGlwX2NvZGUnIGRpcj0nbHRyJz48Y29kZT4mbHQ7aHRtbCZndDs8YnIgLz4NCiZsdDtoZWFkJmd0OzxiciAvPg0KJmx0Oy9oZWFkJmd0OzxiciAvPg0KJmx0O2JvZHkmZ3Q7PGJyIC8+DQpWb2ljaSBsYSBkYXRlIGluZGlxdSZhbXA7ZWFjdXRlZSBwYXIgbGUgc2VydmV1ciB3ZWIgOjMwLzA4LzIwMDM8YnIgLz4NCiZsdDsvYm9keSZndDs8YnIgLz4NCiZsdDsvaHRtbCZndDs8L2NvZGU+PC9kaXY+">div>

La zone de code php a disparu, et a été remplacée par le code HTML généré par celui-ci : la phrase et la date.

Une petite variante :

div class="base64" title="PGRpdiBzdHlsZT0ndGV4dC1hbGlnbjogbGVmdDsnIGNsYXNzPSdzcGlwX2NvZGUnIGRpcj0nbHRyJz48Y29kZT4mbHQ7P3BocDxiciAvPg0KZWNobyAmcXVvdDsmbHQ7aHRtbCZndDsmcXVvdDs7PGJyIC8+DQplY2hvICZxdW90OyZsdDtib2R5Jmd0OyZxdW90Ozs8YnIgLz4NCmVjaG8gJnF1b3Q7Vm9pY2kgbGEgZGF0ZSBpbmRpcXUmYW1wO2VhY3V0ZWUgcGFyIGxlIHNlcnZldXIgd2ViIDomcXVvdDs7PGJyIC8+DQokbGFkYXRlID0gZ2V0ZGF0ZSgpOzxiciAvPg0KJG1vaXMgPSAkbGFkYXRlWydtb250aCddOzxiciAvPg0KJG1qb3VyID0gJGxhZGF0ZVsnbWRheSddOzxiciAvPg0KJGFubmVlID0gJGxhZGF0ZVsneWVhciddOzxiciAvPg0KZWNobyAmcXVvdDskbWpvdXIvJG1vaXMvJGFubmVlJnF1b3Q7OzxiciAvPg0KZWNobyAmcXVvdDsmbHQ7L2JvZHkmZ3Q7JnF1b3Q7OzxiciAvPg0KZWNobyAmcXVvdDsmbHQ7L2h0bWwmZ3Q7JnF1b3Q7OzxiciAvPg0KPyZndDs8L2NvZGU+PC9kaXY+">div>

Dans cette variante, tout le script est rédigé en PHP, et toutes les balises HTML sont générées par le code PHP. Le premier script est plus clair, mais il devient par fois plus simple de générér tout une zone de HTML en php, dès lors que le HTML statique doit être sans arrêt combiné avec des éléments dynamiques.

Une deuxième variante :

div class="base64" title="PGRpdiBzdHlsZT0ndGV4dC1hbGlnbjogbGVmdDsnIGNsYXNzPSdzcGlwX2NvZGUnIGRpcj0nbHRyJz48Y29kZT4mbHQ7P3BocDxiciAvPg0KJGxhZGF0ZSA9IGdldGRhdGUoKTs8YnIgLz4NCiRtb2lzID0gJGxhZGF0ZVsnbW9udGgnXTs8YnIgLz4NCiRtam91ciA9ICRsYWRhdGVbJ21kYXknXTs8YnIgLz4NCiRhbm5lZSA9ICRsYWRhdGVbJ3llYXInXTs8YnIgLz4NCj8mZ3Q7PGJyIC8+DQombHQ7aHRtbCZndDs8YnIgLz4NCiZsdDtib2R5Jmd0OzxiciAvPg0KVm9pY2kgbGEgZGF0ZSBpbmRpcXUmYW1wO2VhY3V0ZWUgcGFyIGxlIHNlcnZldXIgd2ViIDombHQ7P3BocCBlY2hvICZxdW90OyRtam91ci8kbW9pcy8kYW5uZWUmcXVvdDs7PyZndDs8YnIgLz4NCiZsdDsvYm9keSZndDs8YnIgLz4NCiZsdDsvaHRtbCZndDs8L2NvZGU+PC9kaXY+">div>

UL>

{{
Remarque :}} sur cette deuxième variante, il faut penser à placer un espace entre la balise php et la première instruction. Sinon on obtient une erreur de syntaxe "parse error at line xxx". Si on place l'instruction sur la ligne suivante, inutile d'ajouter un espace.

UL>

{{{Le séparateur d'instructions : point-virgule}}}

Vous avez sans doute remarqué sur les exemples que les lignes de code se terminent par un point virgule.

Ce point-virgule est très important (on le retrouve dans la syntaxe du C et du Perl) car il joue le rôle de séparateur d'instructions. Il indique au "parser" à quel endroit s'achève un groupe de mots clés, cet ensemble de mots clés constituant une instruction. Et ceci, indépendamment des sauts de ligne...

    echo "bonjour";

est aussi valide que :

    echo
    "bonjour";

{{Avec quel outil écrire ses scripts PHP ?}}

L'idéal est d'utiliser un éditeur HTML qui soit capable de reconnaître la syntaxe du PHP. La "coloration syntaxique" permet notamment de détecter facilement les parenthèses mal fermées, les quotes oubliées, les fonctions mal orthographiées. [Editplus->http://www.editplus.com] ou [Context->http://fixedsys.com/context/] ou encore [Ultraedit->http://www.ultraedit.com] sont de bons exemples de ce style d'éditeur mais il y'en a bien d'autres.

On peut également utiliser des outils plus évolués comme Dreamweaver ou Golive. Dans les deux cas, il faut bien maîtriser le logiciel avant d'utiliser les fonctionnalités PHP, sous peine de voir les générateurs de code de ces applications, soit effacer ces balises qu'ils ne connaissent pas, soit écrire au beau milieu, en transformant votre code en bouillie.

Il existe également des environnements de développement, qui peuvent également rendre de sérieux services : [PHPEdit->http://www.phpedit.net]

En tout cas, il faut bannir les traitements de texte évolués, comme Word

P>

td>tr>table>

{{{Les commentaires}}}

Le langage PHP est très généreux avec les développeurs habitués à d'autres langages : il accepte tous les types de commentaires C et les notations type SHELL UNIX.

Rappelons ici l'utilité de "documenter" et de "commenter" son code, pour le rendre plus accessible à d'autres développeurs, ou à soi même, quand on se replonge dans ses propres scripts quelques mois après les avoir écrits.

Voici l'exemple de tout à l'heure avec les différents types de commentaires :

<?php
// commentaire type C sur une ligne,
// tout ce qui suit le // est considéré comme un commentaire
/* commentaire type C sur plusieurs lignes
Toutes les lignes entre les deux balises
sont considérées comme des commentaires
*/
# Commentaire type Shell Unix
$ladate = getdate();
$mois = $ladate['month'];
$mjour = $ladate['mday'];
$annee = $ladate['year'];
?>
<html>
<body>
Voici la date indiqu&eacutee par le serveur web :<?php echo "$mjour/$mois/$annee";?>
</body>
</html>

Il est déconseillé d'utiliser les commentaires type SHELL Unix et //, car ils peuvent rendre le code ambigu, ou ne font pas bon ménage avec le XML. Les commentaires // sont par contre recommandés avec PEAR.[[PEAR est une architecture et un système de distribution de composants PHP réutilisables. L'acronyme signifie "PHP extension and application repository" : extension du php et dépôt d'applications. Grâce à des spécifications très strictes et une utilisation standardisée de la programmation objet, les classes incluses dans PEAR sont facilement implémentables dans toute application PHP ]]

La suite : [->art7]

Philippe YONNET


[1] Certains serveurs acceptent n'importe qu'elle extension, d'autres non. Certains hébergements, pour éviter à leurs clients des soucis de compatibilité ascendante, ont choisi d'interpréter ".php" ou ".php4" comme du php version 4 et ".php3" comme du PHP version 3. L'aide en ligne de votre hébergeur sera utile pour savoir quel sera le comportement à attendre dans votre cas particulier

[2] le code html est volontairement simplifié, désolé pour les puristes de la normalisation