Mon premier programme en PHP (3e Partie)

Nous poursuivons le survol des principales instructions du langage PHP.

Après avoir vu :
- les variables et les constantes
- et les opérateurs
dans l’article précédent.

Nous abordons à présent deux groupes d’instructions qui donnent toute sa puissance au langage :
- les structures de contrôles
- les fonctions et les classes

Il s’agit bien d’un survol pour vous donner un aperçu synthétique, pour en savoir plus, consultez la documentation php complète en français :
http://fr.php.net/manual/fr/index.php

Revenir à la première partie
Revenir à la deuxième partie

Les structures de contrôles

Le langage PHP dispose des mêmes boucles et tests que le langage C, les habitués de ce langage ne seront pas dépaysés.

Les tests

Il y’a deux tests disponibles :
-if ... elseif ... else
-switch ... case ... default

Les boucles

Le langage PHP propose trois types de boucles
-while
-do ... while
-for

break et continue [1]

each et list

Ces deux fonctions sont particulièrement utiles dans les boucles parcourant les tableaux.

include et require

Ces deux instructions font la même chose [2] : elles ajoutent à un emplacement donné une portion de code qui est exécutée avec le reste du script.

include et require permettent notamment de réutiliser des portions de codes dans plusieurs scripts [3], d’utiliser des bibliothèques de fonction et des classes objets.

Exemple d’utisation

    include "footer.inc.php";

Les fonctions

L’essentiel de la puissance du langage PHP provient du très grand nombre de fonctions disponibles par défaut dans le langage. Les débutants en programmation php ont une fâcheuse tendance à réiventer la roue, alors que le plus souvent, une fonction existe déjà dans le langage qui permet de remplir le même office, et souvent mieux et plus vite.

Si néanmoins la fonction n’existe pas, où si l’on veut alléger le code en créant une fonction capable d’effectuer des tâches complexes ou originales, il est très facile de définir des fonctions utilisateur.

Les fonctions des bibliothèques PHP

La communauté des développeurs du langage PHP a, au fil du temps, inventé des librairies de fonctions pour pratiquement tous les besoins imaginables pour une application web.

Il existe 124 librairies fournies avec les versions « officielles » de PHP, comportant souvent plusieurs dizaines de fonctions !

Il existe aussi de très nombreuses librairies complémentaires, qui ne sont pas fournies avec les « packages » officiels, et qui peuvent être installées pour étendre les possibilités du langage…

Compte tenu de ce foisonnement, il est assez vain de lister toutes ces librairies. On se réferera à la documentation php pour trouver la librairie qui correspond au type de scripts que vous souhaitez écrire :

http://fr2.php.net/manual/fr/funcref.php

Les fonctions utilisateur : principe

Les classes

PHP dispose de fonctionnalités objet limitées mais néanmoins très puissantes. Le développement de classes objet dans certains projets peut donc apporter de nombreux avantages :
- réutilisabilité et portabilité facilitée du code
- réduction du temps de développement et de débogage sur des projets complexes
- allègement du code de certains programmes

PHP n’est pas un langage objet véritable : c’est un langage de programmation structurée avant tout, disposant de fonctionnalités objet [4].

La programmation objet : principes et limitations en PHP
Avertissement : la programmation objet est SIMPLE mais nécessite, pour pouvoir l’utiliser de rentrer dans son paradigme : une série de concepts, assez abstraits. Nous partons du principe que vous connaissez ces concepts ici. Si tel n’est pas le cas, commencez pas lire d’abord un ouvrage généraliste sur la programmation objet, avant de développer des classes PHP.

Déclaration d’une classe objet
La déclaration d’une classe se fait à l’aide de l’instruction Class
exemple :

    Class exemple{
    ...
    }

Définition d’une classe objet
Définir la classe revient à déclarer et définir ses propriétés et ses méthodes

Propriétés
Une propriété n’est ni plus ni moins qu’une variable PHP classique, qui définie dans une classe devient un attribut de celle-ci.
Par contre, dans le contexte de la POO, le caractère facultatif de la déclaration de variable disparaît, et il devient nécessaire de déclarer une variable réutilisée au sein de la classe en tant que propriété.
La déclaration se fait avec le mot-clé var

    Class exemple{
    var $une_propriete; // exemple de déclaration de propriété
    ...
    }

Méthodes
Une méthode se déclare et se définit comme une fonction php classique.

    Class exemple{
    function une_methode{ //un exemple de déclaration de méthode
    ...
    }
    ...
    }

Cas particuliers des constructeurs
Le constructeur est une méthode du même nom que la classe, qui s’exécute automatiquement lors de l’instanciation de la classe. Il n’y a pas de syntaxe particulière de déclaration pour la méthode constructeur en php.

Instanciation
Les classes en php s’instancient à l’aide de la commande New

    <?php
    Class exemple{
    ...
    }
    $nouvelobjet = new exemple //instanciation de la classe objet exemple sous l'alias $nouvelobjet
    ?>

Invocation et accès aux propriétés et méthodes

L’accès aux propriétés et méthodes d’un objet se fait à l’aide de l’accesseur -> (« tiret » « supérieur »)
Exemples d’utilisation :

    <?php
    Class exemple{ //déclaration de la classe exemple
    var une_propriete; //déclaration d'une propriété
    function une_methode{ //déclaration d'une méthode
    ...
    }
    ...
    }
    $nouvelobjet = new exemple //instanciation de la classe objet exemple sous l'alias $nouvelobjet
    $nouvelobjet->une_methode(); // appel de la méthode une_methode
    echo $nouvelobjet->une_propriete; // accède à la propriété une_propriété et l'affiche
    $nouvelobjet->une_propriete='valeur'; // assigne une valeur à une propriété
    ?>

Polymorphisme
Il est possible d’étendre les propriétés d’une classe : PHP permet le polymorphisme. Il suffit d’ajouter le mot clé extends

    <?php
    Class exemple{
    ...
    }
    Class deriveedeexemple extends exemple{
    var unenouvellepropriete //propriété supplémentaire
    function unenouvellemethode{ //méthode supplémentaire
    ...
    }
    ?>

A noter (c’est classique en POO) le rôle particulier du mot « this » qui permet de remplacer le nom de l’objet quant on doit l’utiliser à l’intérieur d’une classe

Après ce survol des fonctionnalités et des instructions du PHP, il est grand temps de s’attaquer à notre premier programme : un formulaire qui poste ses données par mail tout en les stockant dans une base de données

Suite de l’article : un exemple de programme classique en PHP

Revenir à la première partie
Revenir à la deuxième partie


[1] Ces deux instructions ne sont normalement utilisées que dans un tout petit nombre de cas particulier en programmation structurée. Si vous les utilisez fréquemment, c’est le signe d’un programme mal conçu

[2] La différence réside dans la matière de gérer les exceptions et les erreurs. En cas d’erreur, include ne renvoie qu’un avertissement, le script peut continuer à s’exécuter. Require arrête le fonctionnement du script

[3] Cette manière d’opérer permet par exemple de rassembler le code figurant respectivement dans l’en-tête et le pied de page de toutes les pages d’un site, dans deux fichiers include… Cette méthode est souvent appelée pseudo-frames

[4] La version 5 du PHP viendra changer la donne : les dernières fonctionnalités objets manquantes dans la version 4 sont au rendez-vous, et il sera donc possible de développer des applications 100% en programmation orientée objet ou presque. Mais que les allergiques à la POO se rassurent (il y’en a) : la programmation structurée reste toujours supportée