Les derniers articles
Article :: Introduction à PHP 5
Date :: 2004-02-28
Last Updated :: 2004-04-22
Introduction
J' aimerais vous faire profiter de mes expériences concernant PHP 5. En effet, depuis un petit moment, j'effectue quelques tests, et je vais les partager avec vous...
Je ne vais ici pas aborder le côté coding, par contre je vais vous expliquer quelques unes des fonctionnalités nouvelles caractérisant PHP5.
PHP 5 est désormais disponible en version finale, et tous les hébergeurs sérieux devraient l'avoir adopté d'ici
6 mois, voire un an tout au plus : Il FAUT donc commencer a s' y mettre ..
Installation d' Apache 2 et PHP 5
Tout d'abord, il vous faut récupérer les sources ( format tar.gz pour Linux , .zip pour windows ), mais deux remarques cependant :
- L'installation du serveur Apache 2 sous windows s'effectuera au moyen de l'installer
- le terme VERSION correspond à la version de vos sources
Installation sous Linux
Nous allons voir comment configurer, compiler et installer PHP 5 en tant que module du serveur Apache 2 sous Linux.
1 - Décompresser les archives :
tar -zxvf php-5VERSION.tar.gz
2 - Configuration, compilation et installation d' Apache 2 :
./configure --enable-so --enable-rewrite
make && make install
Dans le détail :
- ./configure annonce la configuration du serveur, cette commande est généralement suivie (comme c'est le cas ici) par un ou plusieurs préfixes,
- --enable-so signifie que le serveur sera configuré avec la possibilité de charger des modules dynamiquement,
- --enable-rewrite permettra d'utiliser le mod_rewrite de Apache,
- make effectue la compilation,
- make install effectue l'installation proprement dite du serveur. Cette étape nécessite les droits de ROOT pour être effectuée (obtenue en utilisant la commande su).
3 - Configuration, compilation et installation de PHP 5 en tant que module du serveur Apache 2 :
./configure --with-apxs2=/usr/local/apache2/bin/apxs --disable-cgi --enable-soap --with-libxml-dir=/usr --with-xsl
make && make install
cp php.ini-dist /usr/local/lib/php.ini
Comme vous pouvez le constater, PHP est configuré afin d'être utilisable avec l'extension SOAP et afin de pouvoir réaliser des transformations de fichiers XML via XSL.
4 - Edition du fichier httpd.conf ( /usr/local/apache2/conf/httpd.conf ) :
AddType application/x-httpd-php .php .php5 .inc
5 - Démarage du serveur :
6 - Arrêt du serveur :
On peut néanmoins automatiser le démarrage et l'arrêt du serveur Apache en se basant sur ce petit tutoriel paru sur Léa-linux expliquant la gestion des services sous Linux. Une autre possibilité est de chercher un script tout fait et, en cherchant, on finit par trouver quelque chose de très intéressant : ce script fait parfaitement l'affaire moyennant quelques petites modifications dans la mesure ou le chemin menant au serveur n'est pas le même :
DAEMON=/usr/local/apache2/bin/apache
PIDFILE=/var/run/$NAME.pid
CONF=/usr/local/apache2/conf/httpd.conf
APACHECTL=/usr/local/apache2/bin/apachectl
Nommez ce fichier apache, copiez-le dans le répertoire /etc/init.d et rendez-le exécutable en tapant chmod +x /etc/init.d/apache. Vous pouvez ainsi contrôler votre serveur en tapant /etc/init.d/apache suivi de la commande à réaliser à choisir parmi les suivantes : start, stop, reload, reload-modules, force-reload, restart. Ce script a été testé avec succès sous Fedora Core 1. Vous devez avoir les droits de ROOT pour pouvoir effectuer toutes ces opérations.
Installation sous Windows
1 - Installation du serveur Apache 2
Lancer l'installer que Apache 2 fournit pour Windows, et laissez vous guider. Le serveur sera installé par défaut dans le répertoire c:/Program Files/Apache Group/Apache2/.
2 - Installation de PHP 5 en tant que module du serveur Apache 2
- Décompresser l'archive zip dans un répertoire, par exemple : C:/php-5VERSION
- Copier le fichier php4ts.dll dans le répertoire /system32 de windows.
3 - Edition du fichier httpd.conf ( Ajouter les lignes suivantes ) :
AddType application/x-httpd-php .php .php5 .inc
Nouvelles extensions
La nouvelle base de données SQLite
Cette base de donnée embarquée est compilée par défaut avec PHP 5. Par contre, MySQL ne l'est toujours pas (ou plus ) à l' heure actuelle.
SQLite est TRES rapide et extrêmement simple d'utilisation. SQLite supporte les requêtes imbriquées. Cette base de données n'est pas destinée à remplacer MySQL ou autre, mais elle est plutôt à reserver aux tables nécessitant peu de mises à jour.
Classe SQLite sur classes.scriptsphp.org : Classe SQLite
Selon la documentation PHP, SQLite peut également fonctionner avec PHP 4.3.3 ou PHP 4.3.4, mais je n' ai jamais réussi à la compiler, alors qu'avec PHP 5, aucun problème...
Exemple :
$R = sqlite_open($VotreBase, 0666, $error);
sqlite_query( 'SELECT truc FROM machin' , $R );
?>
L' extension SimpleXML
Comme son nom l' indique, cette nouvelle extension permet de manipuler TRES simplement des documents XML.
Exemple :
<root>
<tag>Coucou</tag>
</root>
<?php
$O = simplexml_load_string( $MaChaineXML );
// affichera Coucou
echo $O -> root -> tag;
?>
Classe SimpleRSS sur classes.scriptsphp.org :
Classe SimpleRSS
L' extension Tidy
Cette extension permet entre autre, de nettoyer, corriger ou manipuler des documents (X)HTML.
Exemple :
$O = tidy_parse_file( 'http://www.site.museum' );
tidy_clean_repair($O);
echo tidy_get_error_buffer($O);
echo tidy_get_output($O);
?>
Programmation Orientée OBJET
Si vous êtes amateurs de programmation orientée Object ( OOP ), PHP 5 va vous ravir avec toutes ses nouveautés.
Constructeur et Destructeur
Le constructeur d'un objet s'appelle désormais __construct(). L'ancienne syntaxe, qui consistait à appeler le constructeur avec le même nom que la classe, reste bien entendu valable. La notion de destructeur fait son apparition.
Exemple :
class MaClasse {
function __construct( $File ) {
$this->Handle = fopen($File , 'r');
}
function __destruct() {
fclose($this->Handle);
}
}
?>
Portée des classes, variables membres et méthodes
Il est désormais possible de définir la portée des variables ou méthodes membres d'une classe.
- Public : possibilité d'accès dans tous les contextes,
- Protected : les variables ou méthodes membres déclarées en protected ne sont accessibles qu'à l'intérieur de la classe ou d'une classe dérivée,
- Private : accès uniquement depuis la classe,
- Final : ce mot clé s'applique uniquement aux méthodes, et permet d'empêcher sa réécriture dans une classe dérivée,
- Abstract : ce mot clé s'applique aux classes et aux méthodes. Une classe déclarée en abstract ne peut être instanciée. Quand aux méthodes, elles devront être réécrites dans une classe dérivée.
exemple :
class MaClasse1 {
public $var1 = 'PHP';
protected $var2 = 'XML';
private $var3 = 'XSLT';
public final function __construct( ) {
}
abstract function display();
}
class MaClasse2 extends MaClasse1{
function Display() {
// affichera PHP
echo $this->var1;
// affichera XML
echo $this->var2;
// Provoquera une erreur
// $var3 est privée et ne peut être utilisée en dehors de MaClasse1
echo $this->var3;
}
}
$O = new MaClasse2;
// affichera PHP
echo $O -> var1;
// Provoquera une erreur
// $var2 est protégée et ne peut être utilisée en dehors de MaClasse1 ou d' une classe dérivée
echo $O -> var2;
// Provoquera une erreur
// $var3 est privée et ne peut être utilisée en dehors de MaClasse1
echo $O -> var3;
?>
Les constantes
Les constantes sont des variables qui devront rester inchangées tout au long de la vie de l' objet. Toute tentative de réécriture provoquera une erreur.
exemple :
class MaClasse {
const COUCOU = 'salut';
function __construct() {
echo 'Hello World';
}
}
// affichera : salut
echo MaClasse::COUCOU;
?>
La methode __call()
Elle est appelée automatiquement si l' on tente d'utiliser une méthode inexistante ce qui peut éventuellement permettre de gérer des erreurs.
exemple :
class MaClasse {
function __call($name , $arguments) {
echo 'Vous tentez d appeler la méthode ', $name;
}
}
// affichera : Vous tentez d appeler la méthode coucou
MaClasse::coucou();
?>
La méthode __get()
Elle est appelée automatiquement si l'on tente d' utiliser une variable membre inexistante.
exemple :
class MaClasse {
function __get($name) {
echo 'Vous tentez d\'appeler la variable membre ', $name;
}
}
// affichera : Vous tentez d'appeler la variable membre coucou
$O = new MaClasse;
echo $O -> cooucou
?>
La méthode __set()
Elle est appelée automatiquement si l'on tente d'assigner une valeur à un variable membre inexistante.
exemple :
class MaClasse {
function __set($name , $value) {
echo 'Vous tentez d\'assigner ', $value, ' dans ', $name;
}
}
// affichera : Vous tentez d assigner plouf dans coucou
$O = new MaClasse;
$O -> coucou = 'plouf';
?>
La fonction __autoload
Cette fonction est un mécanisme de chargement automatique des classes, selon leur nom , lorsque elles ne sont pas préalablement déclarées.
exemple :
function __autoload($ClassName) {
@include $ClassName . '.php';
}
// La fonction __autoload() sera appelée et tentera d' inclure le fichier MaClasse.php
$O = new MaClasse;
?>
Passage des objets par référence
Les objets sont désormais passés automatiquement par référence et non plus par valeur, il n'est donc plus nécessaire d'ajouter des & un peu partout.
Quelques Nouvelles fonctions intéressantes
!!! La documentation de ces fonctions peut ne pas être encore en ligne !!!
- scandir PHP5 beta 1
- array_combine PHP5 beta 1
- array_walk_recursive PHP5 beta 1
- str_split PHP5 beta 1
- get_headers PHP5 beta 1
- strpbrk PHP5 beta 1
- file_put_contents PHP5 beta 1
- substr_compare PHP5 beta 2
- http_build_query PHP5 beta 2
- get_declared_interfaces PHP5 beta 3
- image_type_to_extension PHP5 beta 3
- php_check_syntax PHP5 beta 3
- php_strip_whitespace PHP5 beta 3
- headers_list PHP5 beta 3
- soap PHP5 beta RC1
Conclusion
Il reste encore pas mal de nouvelles fonctionnalités, que je n ai pas testé, ou simplement oublié, notamment l'apparition des try{}, catch{}, des exceptions, et j'en passe, qui ont l'air bien sympathiques aussi, mais dont je n'ai pas l'usage pour le moment. Je n'hésiterais pas à vous en reparler si vous êtes interessés ..
Liens sur PHP 5
Pour info, les articles ou pages de référence qui m' ont aidé pour tester PHP 5 sont les suivants :
Fabrice Lezoray < fabrice AT scriptsphp.org >, Microtom .
Trackback
Il n'y a pas de trackback recensé pour cet article.
Faire un trackback sur cet article http://classes.scriptsphp.org/Trackbackserver.introduction-a-PHP-5, récupérer les trackback sur cet article