Logo classes.scriptsphp.org PHP

go to nav bar

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 httpd-2VERSION.tar.gz
tar -zxvf php-5VERSION.tar.gz

2 - Configuration, compilation et installation d' Apache 2 :

cd httpd-2VERSION
./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 :

cd ../php-5VERSION
./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 ) :

LoadModule php5_module modules/libphp5.so
AddType application/x-httpd-php .php .php5 .inc

5 - Démarage du serveur :

/usr/local/apache2/bin/apachectl start

6 - Arrêt du serveur :

/usr/local/apache2/bin/apachectl stop

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 :

PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/apache2/bin
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 ) :

LoadModule php5_module c:/php-5VERSION/php5apache2.dll
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 :

<?php 
$R 
sqlite_open($VotreBase0666$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 :

<?xml version="1.0" encoding="utf8"?>
<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 :

<?php 
$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 :

<?php
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 :

<?php
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 :

<?php
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 :

<?php
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 :

<?php
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 :

<?php
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 :

<?php
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 !!!

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

Merci de ne pas suivre ce lien emails.

0.0995s | «»
PHP powered