UP PREVIOUS NEXT   Technologies Internet et Education, © TECFA
  2. Classes et libraires PhP

2. Classes et libraires PhP

2.1 Utilisation de librairies et d'API

 

A. Inclusion de librairies

When running ADOdb, at least two files are loaded. First is adodb/adodb.inc.php, which contains all functions used by all database classes.

include('/path/to/set/here/adodb.inc.php');
$adodb_path = "/web/lib/php/adodb";
include("$adodb_path/adodb.inc.php");

2.2 La programmation orientée objet

Définitions simplifiées (!!):

 

2.3 Un premier regard sur les objets en PhP 4

Exemple 2-1: Une simple classe PHP


 
class
 Student {

// propriétés de la classe

  var $name;
  var $scores;

// fonction "constructeur" pour créer l'objet (voir explication plus loin)

 function Student ($nom) { $this->name = $nom; }

 

// Fonction accesseur pour le nom de l'étudiant

 function getName () { return $this->name; }

 

 

// fonction accesseur pour les notes (sans tester s'il en a !)

  function getGrade () {
    $sum = 0;
    $n_scores = sizeof($this->scores);
    foreach ($this->scores as $score) {
      $sum += $score; 
    }
    $grade = $sum / $n_scores;
    return $grade;
  }

// accessor function pour insérer une note

  function addScore ($score) { $this->scores[] = $score; }
 
// end of Student class definition
}

Utilisation de la classe student:

 

// Création de 2 étudiants:

$nath = new Student("Nathalie Dupont");
$jule = new Student
("Gilles Jules");
 

// Ajouter quelques notes à Nathalie:

$nath->addScore(4); $nath->addScore(5); $nath->addScore(3); 
$nath->addScore(6);

// Imprimer sa moyenne:

echo "Grade obtained by ".$nath->getName()
. ": " .$nath->getGrade()
;

2.4 Définition de la classe

class
 Student{
....
}
new Student();
$etudiant = new Student ();

A. Définition de propriétés (variables d'objets)

class Student{
  var $propriete_XXX;
  var $propriete_YYY
}

2.5 Définition de méthodes qui accèdent à une propriété

function getName () { 
  return
 $this->name
; 
}

Exemple d'utilisation:

$etudiant->getName();

Note: Il serait aussi possible d'accéder directement au nom avec $etudiant->name , mais ce type d'usage est fortement déconseillé, car il vaut mieux laisser une classe gérer sa méthode de stockage ! C'est le principe d'encapsulation, c.a.d le programmeur- utilisateur d'une classe devrait utiliser strictement les fonctions décrites dans l'API.

A. Définition de méthodes qui modifient une propriété

function changeXXX ($valeur
) {
  $this->propriete_XXX = $valeur
}

B. Constructeurs

function Student ($nom) {
  $this->name = $nom;
}

Exemple d'utilisation:

$etudiant = new Student ("David Taylor");
 

Le constructeur suivant crée un objet "student" avec une valeur par défault

function Student ($nom="Anonymous") {
  $this->name = $nom;
}

Exemple d'utilisation:

$etudiant = new Student ;  // un constructeur sans parenthèses utilise
                         // les valeurs par défaut !

C. Méthodes "ordinaires"

  function getGrade () {
    $sum = 0;
    $n_scores = sizeof($this->scores);
    foreach ($this->scores as $score) {
      $sum += $score; 
    }
    $grade = $sum / $n_scores;
    return $grade;
  }

Exemple d'utilisation:

$etudiant->getGrade()
;

2.6 Utilisation d'une classe I

Exemple 2-2: Une simple classe PHP avec un include

Voici des extraits de code du fichier student-objets.php

// inclusion de la classe

include ("student-class.php");

// On définit un array pour stocker les étudiants

$students=array();

 

// une fonction pour entrer des notes

 
function addScore ($id, $grade) {
  global $students;
  $students[$id]->addScore($grade);
 }

// une fonction pour afficher tous les résultats

function displayScores () {
  global $students;
  echo "<ol>";
  foreach ($students as $student) {
    echo "<li>Grade obtained by " . $student->getName() . ": " 
         . $student->getGrade() . "</li>";    }
  echo "</ol>";  
}
 

// Un constructeur pour créer des étudiants

function makeStudent ($id, $name) {
  global $students;
  $students[$id]  = new Student($id, $name);
}
 

// On crée des étudiants, ils sont mis dans le array indexé $students

 
makeStudent("nath", "Nathalie Dupont");
makeStudent("jules, "Gilles Jules");
makeStudent("steph", "Stephane Durand");
 

// on ajoute des notes ...

addScore("nath",4); addScore("nath",5); addScore("nath",3);  
addScore("jules",2); addScore("jules",1); addScore("jules",3);
....

// Afficher les résultats

 displayScores ();

2.7 Utilisation d'une classe II

Exemple 2-3: Deux simples classes PHP

$staf14 = new Course("Staf14 ..... ");
$staf14->makeStudent("nath", "Nathalie Morand");
$staf14->addScore("nath",4); $staf14->addScore("nath",5);
$staf14->addScores("jules",array(2,1,3,5)); 
$staf14->displayScores (); // Print the results

UP PREVIOUS NEXT -- TIE