Archive

PHP – Naissance du PHP

This entry is part 1 of 7 in the series PHP - Tutoriel

Le PHP est un langage de script utilisé du coté serveur (par opposition à des langages executés coté client
comme le JavaScript). Officiellement, on dit « PHP : Hypertext Preprocessor », mais PHP voulait aussi ancienement
dire « Personal HomePage ».
La syntaxe de ce langage est fortement inspirée du C, mais aussi du Perl et permet une inclusion directe au sein
d’une page Web. Il permet également l’utilisation de bases de données, la création d’images à la volée, de document
PDF, d’animations Flash, de communiquer avec des serveurs externes…

La toute première version du PHP a été développée durant l’automne 1994, par Rasmus Ledorf. Au départ, le PHP
ne lui servait qu’à comptabiliser les visiteurs qui venait lire son CV sur sa page personnelle. Les premières
versions étaient privées et seul Rasmus Ledorf pouvait les utiliser.
Mais devant le nombre grandissant de visiteurs lui reclamant les sources de son extra-ordinaire projet, Rasmus
Ledorf ceda et publia une version publique en début d’année 1995, sous le nom de Personal Sommaire Page Tools.
L’archive contenait un interpreteur très simple, ainsi que quelques exemples de scripts désormais classiques,
comme un livre d’or ou un compteur.
La version 2 du PHP naquit durant l’été 1995, lors de la ré-écriture d’un interpréteur plus puissant. Le PHP
s’appelait alors PHP/FI Version 2, le FI étant l’acronyme d’un autre package (Form Interpreter)
destiné à interpréter les formulaires HTML. Mais ce n’était pas encore suffisant et Rasmus Ledorf ajouta un support
d’accès aux bases de données mSQL. Le PHP/FI pouvait alors prendre son envol…
Le succès est phenomenal et sans cesse grandissant : 15 000 sites web l’utiliseraient fin 1996 et 50 000 à la fin
de l’été 1997.
Durant ce même été, le PHP passa un nouveau stade et devient un projet d’équipe. Zeev Suraski et Andi Gutmans
ré-écrire une nouvelle fois l’interpreteur, qui servat de base au PHP 3. La dernière version en date est le PHP 4.
Il utilise désormais le moteur d’analyse Zend.
Aujourd’hui, la puissance du PHP n’est plus a démontrée. En effet, le PHP serait à ce jour utilisé par plus de
5 millions de sites Web.

Si le PHP a su convaincre un grand nombre de personnes, il n’en reste pas moins qu’il est dévalorisé. En effet,
le triplet « Apache/PHP/MySQL » est considéré (à tort) comme étant celui de l’amateur, donc du pauvre.
Inversement, « IIS/ASP/Access » est reconnu par le milieu informatique comme étant les outils du professionnel
(et donc du riche…).

Mais depuis un moment, la tendance semble s’inverser, et les professionnels semblent enfin s’apercevoir que le PHP
n’a vraiment rien à envier à l’ASP, ou même au JSP.
Voici l’équipe de PHP, affiché grace à une fonction spéciale de ce formidable langage, à l’aide de la fonction phpcredits() :

PHP 4 Credits

PHP Group
Thies C. Arntzen, Stig Bakken, Andi Gutmans, Rasmus Lerdorf, Sam Ruby, Sascha Schumann, Zeev Suraski, Jim Winstead, Andrei Zmievski

Language Design & Concept
Andi Gutmans, Rasmus Lerdorf, Zeev Suraski

PHP 4 Authors
Contribution Authors
Zend Scripting Language Engine Andi Gutmans, Zeev Suraski
Extension Module API Andi Gutmans, Zeev Suraski, Andrei Zmievski
UNIX Build and Modularization Stig Bakken, Sascha Schumann
Win32 Port Shane Caraveo, Zeev Suraski
Server API (SAPI) Abstraction Layer Andi Gutmans, Shane Caraveo, Zeev Suraski

SAPI Modules
Contribution Authors
AOLserver Sascha Schumann
Apache 1.3 Rasmus Lerdorf, Zeev Suraski, Stig Bakken, David Sklar
Apache 2.0 Sascha Schumann
Caudium / Roxen David Hedbor
CGI Rasmus Lerdorf, Stig Bakken
CLI Rasmus Lerdorf, Stig Bakken, Edin Kadribasic
fastcgi Ben Mansell
fhttpd Alex Belits
ISAPI Andi Gutmans, Zeev Suraski
Java Servlet Sam Ruby
NSAPI Jayakumar Muthukumarasamy
phttpd Thies C. Arntzen
pi3web Holger Zimmermann
thttpd Sascha Schumann
tux Sascha Schumann
WebJames Alex Waugh

Module Authors
Module Authors
aspell Rasmus Lerdorf
Assert Thies C. Arntzen
BC Math Andi Gutmans
bz2 Sterling Hughes
Calendar Shane Caraveo, Colin Viebrock, Hartmut Holzgraefe, Wez Furlong
ccvs Brendan W. McAdams, Doug DeJulio
cpdf Uwe Steinmann
crack Alexander Feldman
ctype Hartmut Holzgraefe
CURL Sterling Hughes
CyberCash Evan Klinger
Cyrus Sterling Hughes
DBA Sascha Schumann
dBase Jim Winstead
DBM Rasmus Lerdorf, Jim Winstead
dbplus Hartmut Holzgraefe
dbx (database abstraction) Marc Boeren, Rui Hirokawa, Frank M. Kromann
domxml Uwe Steinmann
dotnet Sam Ruby
EXIF Rasmus Lerdorf, Marcus Boerger
FBSQL Frank M. Kromann
FDF Uwe Steinmann
FilePro Chad Robinson
FRIBIDI Onn Ben-Zvi
FTP Andrew Skalski
GD imaging Rasmus Lerdorf, Stig Bakken, Jim Winstead, Jouni Ahto
GetText Alex Plotnick
GNU GMP support Stanislav Malyshev
HyperWave Uwe Steinmann
icap Mark Musone
IMAP Rex Logan, Mark Musone, Brian Wang, Kaj-Michael Lang, Antoni Pamies Olive, Rasmus Lerdorf, Andrew Skalski, Chuck Hagenbuch, Daniel R Kalowsky
Informix Danny Heijl, Christian Cartus
Ingres II David Hénot
InterBase Jouni Ahto, Andrew Avdeev
IRCG Sascha Schumann
Java Sam Ruby
LDAP Amitay Isaacs, Eric Warnke, Rasmus Lerdorf, Gerrit Thomson, Stig Venaas
Mailparse MIME parsing and manipulation functions Wez Furlong
MCAL Mark Musone, Chuck Hagenbuch
mcrypt Sascha Schumann, Derick Rethans
MCVE Brad House, Chris Faulhaber, Steven Schoch
mhash Sascha Schumann
MING Dave Hayden
mnoGoSearch Alex Barkov, Ramil Kalimullin, Sergey Kartashoff
MS SQL Frank M. Kromann
msession Mark L. Woodward
mSQL Zeev Suraski
Multibyte (Japanese) String Functions Tsukada Takuya
MySQL Zeev Suraski
ncurses Hartmut Holzgraefe
OCI8 Stig Bakken, Thies C. Arntzen, Andy Sautins, David Benson
ODBC Stig Bakken, Andreas Karajannis, Frank M. Kromann, Daniel R. Kalowsky
OpenSSL Stig Venaas, Wez Furlong, Sascha Kettler
Oracle Stig Bakken, Mitch Golden, Rasmus Lerdorf, Andreas Karajannis, Thies C. Arntzen
Ovrimos Nikos Mavroyanopoulos
pcntl Jason Greene
PDF Uwe Steinmann, Rainer Schaaf
Perl Compatible Regexps Andrei Zmievski
Posix Kristian Köhntopp
PostgreSQL Jouni Ahto, Zeev Suraski, Yasuo Ohgaki
Pspell Vlad Krupin
qtdom Jan Borsodi
Readline Thies C. Arntzen
Recode Kristian Köhntopp
Satellite (CORBA) David Eriksson
Sessions Sascha Schumann, Andrei Zmievski
Shared Memory Operations Slava Poliakov, Ilia Alshanetsky
SNMP Rasmus Lerdorf
Sockets Chris Vandomelen, Sterling Hughes, Daniel Beulshausen, Jason Greene
SWF Sterling Hughes
Sybase-CT Zeev Suraski, Tom May
Sybase-DB Zeev Suraski
System V Semaphores Tom May
System V Shared Memory Christian Cartus
tokenizer Andrei Zmievski
User-space object overloading Andrei Zmievski
Verisign Payflow Pro John Donagher, David Croft
Vpopmail David Croft, Boian Bonev
W32API James Moore
WDDX Andrei Zmievski
Win32 COM Zeev Suraski, Harald Radi, Alan Brown
XML Stig Bakken, Thies C. Arntzen
xmlrpc Dan Libby
YAZ Adam Dickmeiss
Yellow Pages Stephanie Wehner, Fredrik Ohrn
Zip Sterling Hughes
Zlib Rasmus Lerdorf, Stefan Roehrich, Zeev Suraski, Jade Nicoletti

PHP Documentation Team
Jouni Ahto, Alexander Aulbach, Stig Bakken, Rasmus Lerdorf, Egon Schmid, Lars Torben Wilson, Jim Winstead
Edited by: Stig Bakken and Egon Schmid

PHP Quality Assurance Team
Andre Langhorst, Derick Rethans, Hellekin O. Wolf, Jalal Pushman, James Moore, Jani Taskinen, Joey Smith, Olivier Cahagne, Phil Driscoll, Sebastian Bergmann, Zak Greant

PHP Website Team
Gabor Hojtsy, Colin Viebrock, Jim Winstead
Categories: PHP Tags:

PHP – Installer Apache, PHP4 et MySQL sous Windows

This entry is part 2 of 7 in the series PHP - Tutoriel
  1. Installation d’Apache
  2. Installation de PHP4
  3. Installation de MySQL

Le PHP est generalement couplé à un serveur du type Apache, et à une base de données MySQL. L’utilisation
et l’installation de ce type d’application est très commune sous Unix ou Linux, mais assez mal documentée
pour les utilisateurs de Windows, d’où cette page.

Installation d’Apache

Comme on l’a vu, PHP s’execute coté serveur. Donc, il nous faut trouver un « serveur ». Windows
est normalement fourni avec Microsoft Personnel Web Serveur. On peut aussi utiliser Microsoft
Internet Information Server
.
Mais il existe une solution alternative qui est Apache. L’utilisation d’Apache est la plus
répandue et il y a fort à parier que votre hébergeur utilise celui-ci. Vous serez ainsi plus proche
des conditions réels d’utilisation de vos scripts.

Pour installer Apache, il vous faut tout d’abord le télécharger à l’adresse suivante :
http://httpd.apache.org/dist/httpd/binaries/win32/.
La version que j’utilise est la 1.3.12.
Une fois téléchargé, lancez l’executable et suivez les instructions (jusque là, c’est pas bien
compliqué :-) )

Une fois que tout les fichiers ont été copiés, vous devez vous munir d’un éditeur de texte simple,
comme le bloc-notes par exemple.
Vous devez alors éditer le fichier nommé httpd.conf. Il est placé dans le répertoire conf
de Apache (Si vous avez choisi d’installer Apache dans le répertoire par défaut, le répertoire est
le suivant : C:\Program Files\Apache Group\Apache\conf).

Vous devez trouver une ligne qui ressemble à celle-ci :


ServerAdmin you@your.address

Vous devez remplacer par votre adresse :


ServerAdmin webmaster@cybwarrior.com

Ensuite, changez la ligne suivante :


#ServerName new.host.name

En :


ServerName localhost

Maintenant, fermez le fichier. Nous allons tester si Apache fonctionne.
Pour cela, vous devez sélectionner le racourci qui s’est normalement créé dans le menu démarrer
de Windows : Start Apache.
Une sorte d’émulation MS-Dos s’execute. La fenêtre doit rester ouverte, ne la fermez pas.
Tout en gardant cette fenêtre ouverte, lancez votre navigateur préféré : Netscape, Internet Explorer,
Opéra (bouah!)…
Saisissez l’URL suivante : http://localhost/.
Tada! La page Web suivante doit normalement s’afficher :

Ca fonctionne! Le serveur web Apache est installé sur ce site!

Pour arreter Apache, vous devez executer le racourci Stop Apache.

Installation de PHP4

Maintenant que Apache est installé, il ne manque plus que PHP. Il vous faut pour cela l’archive regroupant
PHP 4.0.0 pour Win32. Elle est disponible sur http://www.php.net/ dans la rubrique
Downloads

« Dé-zipez » tout les fichiers dans un répertoire de votre choix, par exemple C:\PHP4.
Dans ce répertoire, un fichier nommé php.ini-dist devrait se trouver. Renommez le en php.ini et
déplacez le dans le répertoire Windows (en général, C:\Windows, C:\Win98…)

Vous devez également déplacer les deux fichiers nommés Msvcrt.dll et php4ts.dll dans
le répertoire system de Windows (en général, C:\Windows\System). Si une erreur se produit
lors du déplacement du fichier Msvcrt.dll comme Msvcrt.dll est utilisé par le système, pas
de panique : ça veut juste dire qu’il n’y a pas besoin de déplacer ce fichier.

Et maintenant, rebelote : vous devez, à l’aide de votre éditeur de texte, éditer à nouveau le fichier
httpd.conf.
Cherchez la section suivante :


#
# Dynamic Shared Object (DSO) Support
#
# To be able to use the functionality of a module which was built as a DSO you
# have to place corresponding `LoadModule' lines at this location so the
# directives contained in it are actually available _before_ they are used.
# Please read the file README.DSO in the Apache 1.3 distribution for more
# details about the DSO mechanism and run `apache -l' for the list of already
# built-in (statically linked and thus always available) modules in your Apache
# binary.
#
# Note: The order in which modules are loaded is important.  Don't change
# the order below without expert advice.
#
#LoadModule anon_auth_module modules/ApacheModuleAuthAnon.dll
#LoadModule cern_meta_module modules/ApacheModuleCERNMeta.dll
#LoadModule digest_module modules/ApacheModuleDigest.dll
#LoadModule expires_module modules/ApacheModuleExpires.dll
#LoadModule headers_module modules/ApacheModuleHeaders.dll
#LoadModule proxy_module modules/ApacheModuleProxy.dll
#LoadModule rewrite_module modules/ApacheModuleRewrite.dll
#LoadModule speling_module modules/ApacheModuleSpeling.dll
#LoadModule status_module modules/ApacheModuleStatus.dll
#LoadModule usertrack_module modules/ApacheModuleUserTrack.dll

Ajoutez la ligne suivante, à la fin :


LoadModule php4_module c:\php4\sapi\php4apache.dll

Dans la mesure où vous avez dé-zipé PHP dans le répertoire C:\PHP4.

Maintenant, cherchez la section suivante :


#
# AddType allows you to tweak mime.types without actually editing it, or to
# make certain files to be certain types.
#
# For example, the PHP3 module (not part of the Apache distribution)
# will typically use:
#
#AddType application/x-httpd-php3 .phtml
#AddType application/x-httpd-php3-source .phps

Vous devez ajouter les lignes suivantes :


AddType application/x-httpd-php .php .phtml
AddType application/x-httpd-php-source .phps

C’est lignes spécifient les extensions qui vont permettrent de différencier vos scripts PHP des
autres fichiers. Si vous voulez que vos pages soient des .bob, ils n’y a qu’à le rajouter ici.

Nous allons maintenant tester si tout fonctionne correctement. Pour cela, créer un fichier que
vous nommerez par exemple info.php et écrivez simplement ces trois lignes à l’interieur :


<?php
phpinfo();
?>

Ce fichier doit être situé dans le répertoire htdocs de Apache. Si vous avez installé Apache au chemin par défaut, ce sera C:\Program Files\Apache Group\Apache\htdocs.

Lancez Apache, puis votre navigateur Web préferé. Saisissez l’URL suivante dans la barre d’adresse :
http://localhost/info.php
En toute logique, la page Web suivante doit apparaitre (il n’y a ici qu’une partie) :

PHP Version 4.0.0

Installation de MySQL


Dernière étape : l’installation de MySQL qui fera de PHP un outil puissant.
Comme pour Apache et PHP, vous devez disposez de MySQL. Rendez-vous pour cela à l’adresse suivante :
http://www.mysql.com/ et téléchargez la version adéquate pour Windows.

Vous devez alors dé-ziper tout les fichiers dans un répertoire de votre choix sur votre disque, par
exemple, C:\mysql.

Vous devez alors éditer de fichier de commandes MS-Dos (les .bat). Appellez le premier
start.bat ou demarrer.bat, bref, comme vous voulez. Ecrivez les lignes suivantes
à l’intérieur :


c:\mysql\bin\mysqld-shareware.exe --language=french

Dans la mesure où c:\mysql est le répertoire de votre choix.

Dans la même logique, vous devez créer un autre fichier de commandes que vous nommerez stop.bat ou
arreter.bat.
Ecrivez les lignes suivantes à l’interieur :


c:\mysql\bin\mysqladmin.exe -u root shutdown

Ça y est! Le tout est joué. Pour lancer MySQL, executez le fichier Start.bat, pour l’arreter,
le fichier Stop.bat.
Bien sur, vous pouvez aussi créér 2 racourcis : un pointant vers mysqld-shareware.exe et l’autre vers
mysqladmin.exe dont vous modifierez les propriétés. C’est même plus simple…

Voila! Vous êtes désormais prêt à réaliser des pages Web dynamiques et efficaces.

Categories: PHP Tags:

PHP – Fonctionnement

This entry is part 3 of 7 in the series PHP - Tutoriel

Inclusion du code

Un script PHP n’est rien d’autre que du code écrit dans un fichier texte. Aucune compilation n’est necessaire,
puisque ce langage est interprété (donc plus lent que les JSP).
Si vous avez definit dans le fichier httpd.conf que les extensions des scripts PHP sont .php,
alors vos scripts PHP doivent obligatoirement se trouver dans des fichiers ayant pour extension .php
si vous voulez que ceux-ci soit normalement interprétés.
Mais ce n’est pas tout. Le code doit se trouver au sein de balises HTML spéciales pour pouvoir être analysé
par l’interpreteur. Suivant la configuration du fichier php.ini, vous pourez utilisez l’une des
syntaxes suivantes :

  • <?php [Mon code PHP] ?>
  • <? [Mon code PHP] ?>
  • <SCRIPT language="PHP"> [Mon code PHP] </SCRIPT>
  • <% [Mon code PHP] %>
  • La syntaxe la plus utilisée est la première (<?php et ?>), car elle permet
    d’assurer une portabilité excellente du code lors d’un changement de version du PHP.

    Un des avantages majeures qu’a le PHP face aux CGI écrits en C ou en Perl, c’est que celui-ci peut être directement inclus
    dans un document HTML!
    Ainsi, il est tout à fait courant de rencontrer des scripts PHP ayant la structure suivante :

    <!-- Nom du fichier 'index.php' -->
    <HTML>
    <HEAD>
    <TITLE>Bienvenue sur le site de Titou la Bibine :-) </TITLE>
    </HEAD>
    
    <BODY>
    <H2 align="center">Bienvenue sur le site de Titou la Bibine :-) </H2>
    <?php
    print "Vous êtes notre 50000 visiteurs";
    ?>
    </BODY>
    </HTML>
    

    Lorsque un client, c’est à dire un internaute, va vouloir consulter la page ci-dessus nommée index.php,
    le serveur Apache va s’apercevoir que l’extension du fichier est .php.
    Il va alors envoyer le document à l’analyseur PHP, qui va interpréter toutes les lignes de codes situées dans
    les balises adequates (c’est à dire entre <?php et ?>). Dans notre cas, le
    script va tout simplement écrire la phrase Vous êtes notre 50000 visiteurs dans le document.
    Une fois toutes ces opérations effectuées, Apache va transmettre le document au client (ouf! parce que ça faisait
    un bon moment qu'il attendait ce client :-) ).
    Ensuite, si le client s'amuse à analyser le code HTML, voici ce qu'il va découvrir :

    <!-- Nom du fichier 'index.php' -->
    <HTML>
    <HEAD>
    <TITLE>Bienvenue sur le site de Titou la Bibine :-) </TITLE>
    </HEAD>
    
    <BODY>
    <H2 align="center">Bienvenue sur le site de Titou la Bibine :-) </H2>
    Vous êtes notre 50000 visiteurs
    </BODY>
    </HTML>
    

    On constate que le code PHP est inacessible au client, ce qui fait que rien ne permet au client de savoir
    que la page qu'il lit est en fait un script PHP, si ce n'est l'extension .php du document.

    Categories: PHP Tags:

    PHP – Un premier script

    This entry is part 4 of 7 in the series PHP - Tutoriel

    La syntaxe des fontions en PHP est la même que en C :

    fonction(argument1, argument2, ..., argumentX);
    

    Le nombre d’argument est variable selon la fonction.
    Tient ? C’est étrange : pourquoi n’avons nous pas utiliser de parenthèses dans le script de la page précédente ?
    Pour rappel, voici le code :

    <!-- Nom du fichier 'index.php' -->
    <HTML>
    <HEAD>
    <TITLE>Bienvenue sur le site de Titou la Bibine :-) </TITLE>
    </HEAD>
    
    <BODY>
    <H2 align="center">Bienvenue sur le site de Titou la Bibine :-) </H2>
    <?php
    print "Vous êtes notre 50000 visiteurs";
    ?>
    </BODY>
    </HTML>
    

    La fonction print, qui permet d’écrire dans le document, est une exception. En effet, on peut lui
    omettre des parentèses, ce qui va plus vite à écrire. Mais notre code aurait aussi pu s’écrire :

    <?php
    print("Vous êtes notre 50000 visiteurs");
    ?>
    

    Une autre exception à cette rêgle des fonctions est la fonction echo. La fonction echo
    réalise exactement la même chose que print, avec ou sans parenthèses.
    Pour s’en convaincre, l’exemple suivant suffit :

    <?php
    print("print() : Vous êtes notre 50000 visiteurs<br>");
    print "print : Vous êtes notre 50000 visiteurs<br>";
    echo("echo() : Vous êtes notre 50000 visiteurs<br>");
    echo "echo : Vous êtes notre 50000 visiteurs<br>";
    ?>
    

    Résultat :

    print() : Vous êtes notre 50000 visiteurs
    print : Vous êtes notre 50000 visiteurs
    echo() : Vous êtes notre 50000 visiteurs
    echo : Vous êtes notre 50000 visiteurs

    La seule différence entre print et echo est que cette dernière peut prendre plusieurs
    arguments, séparés par des virgules. Mais là, paradoxe du PHP, il ne faudra pas mettre de parenthèses, sinon une
    erreur se produira :

    <?php
    echo "Un argument", " deux arguments ", "trois arguments";
    ?>
    

    La plupart du temps, une fonction ne se contente pas d’agir. Elle peut également renvoyer une valeur. Le code
    ci-dessous affiche un nombre de visiteurs aleatoire :

    <?php
    echo "Bienvenue à notre ", rand(), "<sup>ème</sup> visiteur!";
    ?>
    

    Ce qui donnera :

    Bienvenue à notre 23697ème visiteur!
    
    Categories: PHP Tags:

    PHP – Les variables

    This entry is part 5 of 7 in the series PHP - Tutoriel
    1. Introduction
    2. Variables dynamiques
    3. Références
    4. Types de données

    Introduction

    Une variable sert à stocker des données temporaires. C’est à dire que ces données seront perdues entre

    deux appels du script.

    En PHP, la syntaxe des variables est très étendue, car elle est inpirée de plusieurs langages, notament

    du Perl et du C.

    Ainsi, les Perliens ne seront pas dépaysés, puisqu’en PHP, les variables débutent par le symbole $

    (dollars). Les noms des variables peuvent être composés des lettres de l’alphabet, de nombres, et du caractère

    de soulignement.

    Voici des noms de variables corrects :

    
    $i
    
    $premier_passage
    
    $telephone1
    
    $telephone2
    

    Pour affecter une valeur à une variable, on utilise l’opérateur = (égal).

    Le PHP est un langage non typé. Il n’y a donc pas de déclaration de type comme il peut y en avoir en C.

    Il suffit d’indiquer la variable, et de lui affecter une valeur :

    
    $password = "jamesbond007";
    
    print $password;
    

    Cette exemple affiche :

    
    jamesbond007
    

    On peut aussi affecter la valeur d’une variable à une autre variable :

    
    $var1 = "JO";
    
    $var2 = $var1;
    
    print $var2;
    

    Cela affiche :

    
    JO
    

    On peut aussi affecter une même valeur à plusieurs variables d’un seul coup, comme en C :

    
    $var1 = $var2 = $var3 = "Waza";
    
    echo $var1, $var2, $var3;
    

    Résultat :

    
    WazaWazaWaza
    

    Variables dynamiques

    En C, on entend par variable dynamique (ou plutôt par tableau dynamique), une variable qui peut avoir une

    taille modifiable dans le temps.

    En PHP, le dynamisme des variables n’a pas le même sens. Il s’agit en fait de pouvoir jouer avec les noms des

    variables.

    En effet, regarder cet exemple :

    
    $citation = "T'es comme le H de Hawai, tu sers à rien :-) ";
    
    print ${"citation"};
    

    Résultat :

    
    T'es comme le H de Hawai, tu sers à rien :-) 
    

    En peut faire encore plus fort :

    
    $citation = "T'es comme le H de Hawai, tu sers à rien :-) ";
    
    $var = "citation";
    
    print $$var;
    

    Cela nous donne encore :

    
    T'es comme le H de Hawai, tu sers à rien :-) 
    

    Ou encore mieux :

    
    $citation = "T'es comme le H de Hawai, tu sers à rien :-) ";
    
    $var = "citation";
    
    $finalement = "var";
    
    print $$$finalement;
    

    Nous pourrions multiplier les exemples à l’infini (ou presque : ça dépend de la memoire et de la place disponible

    sur la pile de votre machine).

    Vu comme ça, cela peut paraitre inutile. Mais il peut y avoir quelques applications interessantes, notament

    avec l’utilisation de boucles.

    Références

    Le PHP permet d’établir des références entre variables. Cela peut paraitre similaire aux pointeurs du C,

    mais il y a quelques petites différences. En fait, comme il est écrit dans le manuel officiel de PHP, « les

    références sont des alias dans la table des symboles. Le nom de la variable et son contenu ont des noms

    différents, ce qui fait que l’on peut donner plusieurs noms au même contenu. »

    Pour établir une référence, on utilise l’opérateur & (et commercial, ou esperluette :-) devant la variable.

    Ainsi :

    
    $hello = "Hello";
    
    $bonjour = "Bonjour";
    
    echo $hello, $bonjour, "<br>";
    
    $hello = &$bonjour;
    
    echo $hello, $bonjour, "<br>";
    
    $hello = "Buenos Dias";
    
    echo $hello, $bonjour, "<br>";
    
    $hello = "Guten Tag";
    
    echo $hello, $bonjour, "<br>";
    

    Résultat :

    
    HelloBonjour
    
    BonjourBonjour
    
    Buenos DiasBuenos Dias
    
    Guten TagGuten Tag
    

    On se rend compte qu’après la ligne $hello = &$bonjour;, on peut utiliser soit la variable $hello,

    soit la variable $bonjour, cela revient au même : elles désignent le même contenu.

    Cela peut sembler inutile, mais lorsque nous étudierons les fonctions, cela sera plus parlant.

    Types de données

    Bien que le PHP soit non typé, les données ont cependant des types. Ainsi, on distinguera 8 de "8",

    4 de 4.00.

    Il existe 6 types de données :

    Les types de données dans PHP

    Type

    Description

    Exemple

    integer

    Nombres entiers

    8

    string

    Chaînes de caractères

    "8"

    double

    Nombre à virgules flottante (nombres décimaux)

    8.00

    boolean

    Valeur logique, soit true, soit false

    true

    array

    Tableaux

    array(1, 2, 3);

    integer

    Nombres entiers

    8

    object

    Objets

    class myclass {};

    new myclass();

    Nous étudierons les types boolean, array et object plus loin.

    Pour connaitre le type d'une donnée, on utilise la fonction gettype(). Cette fonction ne prend

    qu'un seul argument qui doit être la variable ou la donnée à tester.

    Voici un exemple :

    
    class myclass {};
    
    echo	gettype(8), "<br>",
    
    	gettype("8"), "<br>",
    
    	gettype(8.00), "<br>",
    
    	gettype(true), "<br>",
    
    	gettype(array()), "<br>";
    
    	gettype(myclass()), "<br>";
    

    Ce qui nous donne :

    
    integer
    
    string
    
    double
    
    boolean
    
    array
    
    object
    

    Note : on a utilisé la fonction echo sur plusieurs lignes, ce qui est possible et simplifie

    les choses.

    On peut aussi modifier le type d'une variable. En C, on appelle ceci le casting.

    Pour modifier le type de la variable lui même, on utilise la fonction settype(). Voici la syntaxe de

    cette fonction, d'après le manuel PHP :

    
    int settype(mixed var, string type)
    

    Le premier argument, var, peut être de n'importe quel type (c'est le but). Le deuxième argument

    doit être une chaîne de caractères representant le type dans lequel convertir la variable. La fonction renvoi

    true si l'opération de transtypage a été réussie, sinon false.

    Exemple :

    
    $pi = 3.141592654858;
    
    echo $pi, "<br>";
    
    settype($pi, "integer");
    
    echo $pi, "<br>";
    

    Résultat :

    
    3.14159265458
    
    3
    

    On peut aussi modifier le type à l'aide de la syntaxe suivante :

    
    $var = (type) $var
    

    On place le type entre parenthèses (sans guillemets) devant la variable.

    Ainsi :

    
    $var = 3.14159265458;
    
    $new = (integer) $var;
    
    echo $new;
    
    Categories: PHP Tags:

    PHP – Les commentaires

    This entry is part 6 of 7 in the series PHP - Tutoriel

    Les commentaires permettent de donner des indications dans le script, afin de faciliter sa compréhension au

    lecteur.

    Ils sont particuliérement utiles lorsque l’on travaille à plusieurs sur un même site web, ou bien lorsque

    l’on doit parfois relire un script écrit il y a plusieurs mois.

    Certaines personnes, faisant surtout partie de la communauté Linux, soutiennent qu’un code écrit clairement,

    sans astuces de programmeurs n’a pas besoin de commentaires. Chacun son école…

    La syntaxe des commentaires en PHP est à la fois inspirée du C, du C++ et du système d’exploitation Unix/linux.

    Voici les differents types. Les commentaires sont ecrits en vert :

    
    
    # Début du script
    
    /*
    
    	Voici un script merveilleux
    
    	qui sert à donner l'heure à 
    
    	laquelle la page à été chargée
    
    */
    
    print date("H:M:S");		// On écrit l'heure sous le format H:M:S
    
    # Fin du script
    

    Tous ce qui se trouve à l’interieur d’un commentaire est tout simplement ignoré par l’interpréteur.

    Les commentaires avec /* et */ sont hérités du langage C. Comme on le voit, ils

    permettent de commenter du code sur plusieurs lignes. Ce type de commentaire peut être utile lors de la

    mise au point d’un script. On peut avoir besoin d’ignorer plusieurs lignes de code, sans pour autant avoir

    envie de les supprimer.

    Les commentaires en // (qui nous viennent du C++) s’achevent avec la fin de la ligne,

    comme pour les commentaires débutant avec #. Ces derniers sont souvent utilisés dans des fichiers

    de configuration qui initialisent de nombreuses variables (dans des scripts comme phpBB, phpNuke, phpMyAdmin, etc…),

    ceci afin de garder un style Unix.

    Categories: PHP Tags:

    PHP – Les chaînes de caractères

    This entry is part 7 of 7 in the series PHP - Tutoriel

    1. Apostrophes ou guillemets ?
    2. Caractères spéciaux
    3. Here Doc
    4. Accolades

    Apostrophes ou guillemets ?

    Un chaîne de caractères est contenue soit entre des guillemets (« ), soit entre des apostrophes ().

    Les deux lignes suivantes sont donc equivalentes :

    
    print "Hello!";		// Avec des guillemets
    
    print 'Hello!';		// Avec des apostrophes
    

    Quelle est la différence ? La voici : en utilisant des guillemets, les variables contenues à l’interieur de

    la chaîne seront évaluées et remplacées par leur valeur à l’instant t.

    Ainsi :

    
    $nom = "Raphaël";
    
    print "Je m'appelle $nom";	// Sortie -> Je m'appelle Raphaël
    
    print 'Je m'appelle $nom';	// Sortie -> Je m'appelle $nom
    

    Caractères spéciaux

    Comme en C, on peut utiliser l’anti-slash (\) pour echapper des caractères spéciaux, comme par

    exemple, un apostrophe ou des guillemets :

    
    print 'It\'s Sunday and I\'ll go to the Church';	// It's Sunday and I'll go to the Church
    
    print "Et il lui cria : \"Bouh!\" et il sursauta";	// Et il lui cria : "Bouh!" et il sursauta
    

    Il existe aussi des caractères qui ont une signification particulière, comme le montre le tableau ci-dessous.

    On appelle ceci des séquences echapes.

    Les caractères spéciaux en PHP

    Sequences

    Signification

    \n

    Nouvelle ligne (LineFeed). Caractère ASCII 10

    \r

    Retour chariot (Carriage Return). Caractère ASCII 13

    \t

    Tabulation. Caractère ASCII 9

    \\

    Anti-slash lui même

    \$

    Caractère $. Valable uniquement pour les guillemets (")

    Here Doc

    Ce qui est bien avec PHP, c’est que l’on peut écrire une chaîne de caractères sur plusieurs lignes :

    
    $html = "
    
    	<html>
    
    	<head>
    
    	<title>Ma page Web</title>
    
    	</head>
    
    	<body>
    
    	<h2>Welcome to Paradise!</h2>
    
    	</body>
    
    	</html>
    
    ";
    

    Par contre si on veut pouvoir être tout à fait libre d’utiliser n’importe quel caractère dans une chaîne,

    comme les guillemets par exemple, on peut utiliser la syntaxe Here Doc heritée de Perl (que j’aime

    bien :-) . On débute la chaîne par <<< et un identifiant quelconque. On écrit ensuite notre texte,

    puis on termine en ré-écrivant l’identifiant choisi en DEBUT d’une nouvelle ligne, sans oublier le point-virgule

    bien sur.

    Par exemple :

    
    $html = <<< MON_DOC_HTML
    
    	<html>
    
    	<head>
    
    	<title>Ma page Web</title>
    
    	<meta name="description" content="Ma Page Oueb">
    
    	<meta name="keywords" content="paradise,web,page,perso">
    
    	</head>
    
    	<body>
    
    	<h2 align="center">Welcome to Paradise!</h2>
    
    	</body>
    
    	</html>
    
    MON_DOC_HTML;
    

    Attention cependant : avec cette syntaxe, les variables sont toujours interprétées.

    Accolades

    Dans une chaîne avec guillemets, les accolades permettent de specifier des noms de variables comme si elles

    se situées hors de cette chaîne.

    
    $var = "N'est ce pas ?";
    
    print "Quelle complexitée! ${'v' . 'a' . 'r'}";		// Une concatenation est effectuée 
    
    							// lors de l'analyse
    

    Les accolades sont également utiles pour passer des tableaux mutli-dimensionnels (que nous verrons plus tard) :

    
    $ar = array();
    
    $ar[] = array("fou");
    
    print "C'est $ar[0][0], non ?";		// Provoque une erreur
    
    print "C'est {$ar[0][0]}, non ?";	// OK!
    
    Categories: PHP Tags: