Archive

Archives pour la catégorie ‘PHP’

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 – 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: