Créée le, 19/06/2015

 Mise à jour le, 12/05/2019

Visiteurs N°  




Accueil
Nouveau Blog Nouveautés Moteur de Recherche Votre Caddie Pour Vos Achats Votre Espace Membre Vos Signets et Vos Jeux Préférés Page de Bienvenue Statique Site en Français Site en Anglais
Sommaires
Électronique Fondamentale Technologie Fondamentale Testez vos Connaissances Électronique Théorique Digitale Électronique Pratique Digitale Lexique Électronique Numérique Data book TTL Data book CMOS Dépannage TVC Mathématique
Micro-ordinateurs
Théorique des Micro-ordinateurs Testez vos Connaissances Pratique des Micro-ordinateurs Glossaires sur les Ordinateurs
Physique
La lumière Champ d'action Rayonnement Électromagnétique
Technologies
Classification des Résistances Identification des Résistances Classification des Condensateurs Identification des Condensateurs
Formulaires Mathématiques
Géométrie Physique 1. - Électronique 1. 2. - Électronique 1. 3. - Électrotechnique 1. 4. - Électromagnétisme
Accès à tous nos Produits
E. T. F. - Tome I - 257 Pages E. T. F. - Tome II - 451 Pages E. T. F. - Tome III - 611 Pages E. T. D. - Tome I - 610 Pages N. B. M. - Tome I - 201 Pages E. T. M. - Tome I - 554 Pages Business à Domicile Ouvrages 34 pages gratuits Nos E-books Logiciel Géométrie Logiciel Composants Électroniques
Aperçu de tous nos Produits
E. T. F. - Tome I - 257 Pages E. T. F. - Tome II - 451 Pages E. T. F. - Tome III - 611 Pages E. T. D. - Tome I - 610 Pages E. T. M. - Tome I - 554 Pages Logiciel Géométrie Logiciel Composants Électroniques
Nos Leçons aux Formats PDF
Électronique Fondamentale Technologie Fondamentale Électronique Théorique Digitale Électronique Pratique Digitale Théorique des Micro-ordinateurs Mathématiques
Informatique
Dépannage Win98 et WinXP et autres Dépannage PC Glossaire HTML et Programmes PHP et Programmes JavaScript (en cours de travaux) Création de plusieurs Sites
Forums
Forum Électronique et Infos Forum Électronique et Poésie
Divers et autres
Formulaire des pages perso News XML Statistiques CountUs Éditeur JavaScript Nos Partenaires et nos Liens Utiles Gestionnaire de Partenariat Nos Partenaires MyCircle Sondages 1er Livre d'Or 2ème livre d'Or

Signets :
  Leçons suivantes        Leçons précédentes     Bas de page
  Cliquez ici pour la leçon suivante ou dans le sommaire prévu à cet effet


Programmation orientée objets (2ème partie) :



Implémentation d'une classe :


Une fois que le résultat visé et la fonctionnalité recherchée ont été soigneusement définis, nous pouvons attaquer à l'implémentation.


La conception et la gestion de projets d'envergure sont traitées un peu plus loin dans ce deuxième chapitre. Pour l'heure, nous nous limiterons aux aspects spécifiques de l'implémentation PHP orientée objets.


Nous devons attribuer à notre classe un nom logique et explicite. Etant donné que la classe représentera une page Web, nous l'appellerons simplement Page. Pour déclarer une classe dénommée Page.inc, nous pouvons taper le code suisant :


  <?PHP

       class Page

       {

       }

  ?>


Notre classe doit contenir des attributs. Nous définirons comme attributs de la classe Page, les éléments appelés à changer d'une page à l'autre. Nous dénommerons $content le contenu principal de la page, qui sera une combinaison de balises HTML et de texte. La variable $content peut être déclarée au sein de la définition de la classe par la ligne de code suivante :


    var $content ;


Nous pouvons également définir des attributs pour stocker le titre de la page. Pour que les visiteurs du site identifient clairement la page consultée, ce titre changera d'une page à l'autre. Pour éviter que des titres en blanc soient affichés, nous définirons un titre par défaut, via la déclaration suivante :


    var $title = "C.E.I. - Consultant &Eacute;lectronique-Informatique" ;


La plupart des pages Web des sites commerciaux comprennent des méta-balises destinées à aider les moteurs de recherche dans leur indexation. Pour que ces méta-balises soient utiles, elles doivent changer d'une page à l'autre. Là encore, nous fournirons une valeur par défaut, via la déclaration suivante :

    var $keywords = "C.E.I. - Abr&eacute;viation de trois lettres, Consultant         &Eacute;lectronique-Informatique, certains de mes meilleurs amis
        sont des moteurs de recherche" ;

Les boutons de navigation montrés sur la page de notre modèle de la figure 2, à cette adresse (voir la leçon précédente) resteront probablement identiques d'une page à l'autre, afin de ne pas semer la confusion dans l'esprit du visiteur. Toutefois, pour faciliter la modification de ces boutons, nous les implémenterons également sous la forme d'attributs. Etant donné que le nombre de boutons peut être appelé à changer, nous utiliserons un tableau, dans lequel nous stockerons à la fois l'intitulé du bouton, et l'URL pointée.

    var $buttons = array( "Accueil"      => "Home.php",

                          "Contact"      => "Contact.php",

                          "Services"     => "Services.php",

                          "Plan_du_Site" => "Plan_du_Site.php"

                        );

Pour que la classe Page soit dotée d'une fonctionnalité, nous devons la munir d'opérations. Pour commencer, nous pouvons lui fournir des fonctions accesseur, qui nous permettront d'ajuster et d'accéder aux valeurs des attributs définis. Toutes ces fonctions seront implémentées sur le modèle suivant :

    function Set_Content($new_content)

    {

        $this->content = $new_content ;

    }

Parce qu'il est peu probable que nous ayons besoin de récupérer une des ces valeurs depuis l'extérieur de la classe, nous choisirons délibérément de ne pas fournir l'ensemble de fonctions GET correspondant.

Etant donné que la classe Page vise principalement à afficher une page de HTML, nous devons implémenter une fonction à cette fin. Nous dénommerons cette fonction Display() qui signifie "visualiser ou afficher", et nous la déclarerons de la manière suivante :

    function Display()

    {

      echo "<HTML> \n <HEAD> \n" ;

      $this -> Display_Title() ;

      $this -> Display_Keywords() ;

      $this -> Display_Styles() ;

      echo "</HEAD> \n <BODY> \n" ;

      $this -> Display_Header() ;

      $this -> Display_Menu($this->buttons) ;

      echo $this -> content ;

      $this -> Display_Footer() ;

      echo "</BODY> \n </HTML> \n" ;

     }

Outre, quelques simples instructions echo qui affichent le texte HTML, cette fonction comprend essentiellement des appels d'autres fonctions de la classe. Comme le laissent deviner leurs noms, ces autres fonctions affichent des parties distinctes de la page.

Un tel découpage en fonctions n'est pas indispensable. Nous aurions très bien pu combiner ces différentes fonctions en une seule. Nous avons toutefois choisi ce découpage pour diverses raisons.

Chaque fonction doit en principe accomplir une tâche définie. Plus la tâche est simple, plus la fonction est facile à tester. Ne poussez toutefois pas cette modularisation trop loin : un programme scindé en trop d'unités se révèle difficile à lire.

Grâce au concept d'héritage, nous avons la possibilité de redéfinir des opérations. Nous pouvons redéfinir une fonction Display() volumineuse, mais, il est peu probable que nous soyons amené à changer la manière dont toute la page est affichée. Il est par conséquent préférable de scinder la fonctionnalité d'affichage en quelques tâches autonomes, de sorte à pouvoir redéfinir les seules parties qui doivent être modifiables.

La fonction Display() invoque Display_Title(), Display_Keywords(), Display_Styles(), Display_Header(), Display_Menu, et Display_Footer(). Nous devons définir ces opérations. Une des améliorations apportées à la version 4 de PHP¨, par rapport à PHP 3, réside dans le fait que nous pouvons écrire des opérations ou des fonctions dans cet ordre logique, en invoquant l'opération ou la fonction avant le code de la fonction elle-même. En PHP 3, et dans nombre d'autres langages de programmation, la fonction ou l'opération doivent être écrites avant d'être appelées.

La plupart des opérations nécessaires à la classe Page sont relativement simples, et procèdent à l'affichage de code HTML, voire du contenu des attributs de la classe Page.

Le Listing ci-dessous donne l'intégralité du code de la classe Page. Ce script est enregistré dans le fichier Page.inc, en vue de son inclusion dans d'autres fichiers.

Listing 1. : Page.inc - La classe Page constitue un moyen facile et flexible de création de Pages pour le site C.E.I.

Pour visualiser l'aperçu, en cliquant ici. [Exemple 3].

A la lecture du Listing 1, notez que les fonctions Display_Styles(), Display_Header() et Display_Footer() doivent afficher un grand bloc de code HTML statique, sans traitement PHP. Par conséquent, ces opérations sont implémentées sous la forme d'une simple balise de fermeture PHP (?>), suivie du code HTML, puis d'une balise d'ouverture PHP (<?PHP).

La classe Page comprend deux autres opérations que celles citées dans la leçon précédente. L'opération Display_Button() génère un simple bouton de menu. Si le bouton doit pointer sur la page courante, alors, il est remplacé par un bouton inactif, d'apparence légèrement différente, et ne pointant sur aucune page. Cette astuce permet de conserver une présentation cohérente des pages du site, et donne aux visiteurs une indication sur leur localisation dans le site.

L'opération IsURLCurrentPage($url) détermine si l'URL associée à un bouton pointe sur la page courante. Nombre de techniques permettent d'implémenter ce type de test. Dans le cas présent, c'est la fonction de chaîne strpos() qui est mise en œuvre pour déterminer si l'URL donnée est contenue dans l'une des variables de serveur. L'instruction (strpos($_SERVER["PHP_SELF"], $url) == false) renvoie un nombre si la chaîne stockée dans $url est contenue dans la variable globale $_SERVER, et renvoie la valeur false dans le cas contraire.

Pour utiliser la classe Page, nous devons inclure le fichier Page.inc dans un script, et invoquer Display().

Le code donné au Listing 2 crée la page d'accueil du site de l'entreprise fictive C.E.I. - (Consultant Électronique-Informatique), et donne un résultat très semblable à celui montré dans [l'exemple 3], ci-dessus.

Le code du Listing 2 opère de la manière suivante :

  • Il utilise l'instruction require pour inclure le contenu de Page.inc qui stocke la définition de la classe Page.

  • Il crée une instance de la classe Page. Cette instance est appelée $Home_Page.

  • Il invoque l'opération Set_Content() au sein de l'objet $Home_Page, en passant le texte et les balises HTML qui doivent produire le contenu spécifique à la page.

  • Il invoque l'opération Display() au sein de l'objet $Home_Page pour provoquer l'affichage de la page dans le navigateur Web du visiteur.

Listing 2. : Home_2.php - Cette page d'accueil est obtenue en utilisant la classe Page pour accomplir l'essentiel du travail nécessaire à la génération de la page

Le listing 2 montre la facilité avec lequel de nouvelles pages Web peuvent être ajoutées au site lorsque la classe Page est utilisée. En outre, cette approche permet d'obtenir des pages d'apparence très similaire sur l'ensemble du site.

Pour utiliser une variante de la page standard dans une certaine partie du site, il suffit de copier Page.inc dans un nouveau fichier appelé Page_2.inc et d'apporter les modifications voulues. Toutefois, après avoir opéré une telle "scission" de notre modèle, nous devrons reproduire dans le fichier Page_2.inc les mises à jour effectuées dans la Page.inc (le cas échéant). Nous mettons les deux autres fichiers à savoir Contact.php et Plan_du_Site.php afin de faciliter vos essais. Nous mettons également le reste des pages que vous trouverez en bas de cette leçon, dans la totalité du site, vous aurez 10 pages que vous pouvez faire (copier/coller).

Listing 3. : Contact.php - Cette page de Contact est obtenue en utilisant la classe Page pour accomplir l'essentiel du travail nécessaire à la génération de la page

Listing 4. : Plan_du_Site.php - Cette page Plan du Site est obtenue en utilisant la classe Page pour accomplir l'essentiel du travail nécessaire à la génération de la page

Le concept d'héritage nous offre une solution bien meilleure : nous pouvons créer une nouvelle classe qui hérite de l'essentiel de la fonctionnalité de la classe Page, mais qui redéfinit les parties que nous voulons présenter différemment.

Par exemple dans le cas du site C.E.I., nous pourrions vouloir implémenter une seconde barre de navigation dans la page Services.

Le script donné dans le Listing 5 permet d'apporter cette modification, en créant une nouvelle classe appelée Services_Page, qui hérite de la classe Page. Les boutons et les liens que nous voulons voir figurer dans une seconde ligne sont stockés dans un nouveau tableau, appelé $row2_buttons. Parce que cette classe doit avoir un comportement très semblable à celui de la classe Page, nous ne redéfinissons que les parties à modifier, c'est-à-dire l'opération Display().

Listing 5. : Services.php - La classe Services_Page hérite de la classe Page, mais redéfinit l'opération Display() de sorte à produire une barre de navigation différente

L'opération Display() redéfinie est analogue à l'opération Display() de la classe Page, si ce n'est qu'elle contient la ligne supplémentaire suivante :

    $this->Display_Menu($this->row2_buttons) ;

Cette ligne invoque Display_Menu() une seconde fois, de sorte à créer la seconde barre de menus.

Hors de la définition de la classe, nous créons une instance de la classe Services_Page, nous ajustons les valeurs qui requièrent des valeurs différentes des valeurs par défaut, et nous invoquone Display().

Nous mettons à votre disposition les Listings, des pages suivantes :

Petite_Main.gif  Electronique.php (Listing 6).

Petite_Main.gif  Conformites_aux_Normes.php (Listing 7).

Petite_Main.gif  Informatique.php (Listing 8).

Petite_Main.gif  Enonces_de_Mission.php (Listing 9).

Petite_Main.gif  Information_Legale_Classe.html (Listing 10).

Listing 6. : Electronique.php - La classe Electronique.php hérite de la classe Page, mais redéfinit l'opération Display() de sorte à produire une barre de navigation différente

Listing 7. : Conformites_aux_Normes.php - La classe Conformites_aux_Normes.php hérite de la classe Page, mais redéfinit l'opération Display() de sorte à produire une barre de navigation différente

Listing 8. : Informatique.php - La classe Informatique.php hérite de la classe Page, mais redéfinit l'opération Display() de sorte à produire une barre de navigation différente

Listing 9. : Enonces_de_Mission.php - La classe Enonces_de_Mission.php hérite de la classe Page, mais redéfinit l'opération Display() de sorte à produire une barre de navigation différente

Listing 10. : Information_Legale_Classe.html

Comme le montre la figure ci-dessous, nous produisons bien ainsi une variante de la page standard. Pour cela, nous nous sommes contenté d'écrire du nouveau code pour les seules parties réellement différentes et nous avons rajouté quelques pages pour vos essais de travaux.

Apercu_du_Site_CEI.PNG

La création de pages via des classes PHP présente des avantages indéniables. En disposant d'une classe capable de faire l'essentiel du travail à notre place, la création d'une nouvelle page ne nécessite que très peu d'efforts. De plus, nous pouvons facilement mettre à jour toutes les pages du site en une seule fois, en travaillant directement à la source, c'est-à-dire sur la classe. Grâce au principe de l'héritage, différentes variantes d'une même classe peuvent être aisément obtenues, en conservant les avantages de la classe d'origine.

Comme c'est hélas généralement le cas, les avantages de cette approche ont un coût.

La génération de pages à partir d'un script requiert plus d'effort de la part du processeur de l'ordinateur que le simple chargement d'une page HTML statique à partir d'un disque dur, ou la transmission d'une page à un navigateur. Sur un site très fréquenté, ce point peut se révéler important. L'emploi de pages HTML statiques peut alors être préférable, ou la mise en mémoire cache des scripts, de sorte à réduire autant que possible la charge pesant sur le serveur.

Nous terminons ainsi cette sixième leçon et nous verrons dans la prochaine, l'usage d'une Base de données MySQL, et à exploiter les notions relatives à PHP apprises dans les leçons précédentes pour accéder à une base de données à partir du Web.



  Cliquez ici pour la leçon suivante ou dans le sommaire prévu à cet effet.   Haut de page
  Page précédente   Page suivante







Nombre de pages vues, à partir de cette date : le 23 MAI 2019

compteur de visite

    




Envoyez un courrier électronique à Administrateur Web Société pour toute question ou remarque concernant ce site Web. 

Version du site : 10. 5. 14 - Site optimisation 1280 x 1024 pixels - Faculté de Nanterre - Dernière modification : 19 MAI 2019.   

Ce site Web a été Créé le, 14 Mars 1999 et ayant Rénové, en MAI 2019.