DY

02 PHP & la POO

Syntaxe de Base

class

La définition d'une classe commence par le mot-clé class suivi du nom de la classe.

warrior.php

<?php
class Warrior{
    //Attributs
    public $name = 'Conan'; //default value
    public function my_name(){
        echo $this->var;
    }
}
new

Pour créer l'instance d'une classe on utilise le mot-clé new.

index.php

<?php
include('warrior.php');
$warrior1 = new Warrior();
$warrior1->my_name();
Attributs

Les attributs sont définies au sein d'une classe en utilisant un des mots-clés public, protected ou private suivie d'une déclaration classique de variable.

Les variables au sein d'une classe sont appellées attributs (membres, propriétés ou encore champs).

Au sein des méthodes de classes, les attributs peuvent être appelées en utilisant la syntaxe -> (opérateur de l'objet): $this->my_attr.

La pseudo-variable $this est disponible au sein de n'importe quelle méthode quand celle-ci est appelée depuis un objet. $this est une référence à l'objet appellant.

Dans notre classe warrior, ajouter les attributs (publiques) suivants avec une valeur par défault:

Visibilité

Les attributs sont définies comme publiques, protégées ou privées.

warrior.php

<?php
class Warrior{
    //Attributs
    public $name = 'Conan'; //default value
    private $hp = 10;
    private $att = 6;
    private $def = 3;
    public function my_name(){
        echo $this->var;
    }
}

index.php

<?php
include('warrior.php');
$warrior1 = new Warrior();
$warrior1->my_name();
echo $warrior->name;
echo $warrior->att;
echo $warrior->def;
echo $warrior->hp;

Que se passe t'il lors de l'accès au attributs hp, att et def ?

Getter & Setter

Pour remédier aux soucis d'accessibilités, nous allons mettre en oeuvre la notion de getter et de setter

warrior.php

<?php
class Warrior{
    //Attributs
    public $name = 'Conan'; //default value
    private $hp = 10;
    private $att = 6;
    private $def = 3;
    public function get_hp(){
        return $this->hp;
    }
    public function set_hp($hp){
        $this->hp = $hp;
    }
    public function my_name(){
        echo $this->var;
    }
}

Tester ces deux nouvelles méthodes, quels est leur intérêt ? Ajouter les getters et setters pour les autres attributs de notre classe.

Constructeur

La déclaration de constructeur permet d'ajouter un comportement qui sera appelé à chaque création d'une nouvelle instance de la classe.

warrior.php

<?php
class Warrior{
    //Attributs
    public $name = 'Conan'; //default value
    private $hp = 10;
    private $att = 6;
    private $def = 3;
    function __construct($name, $hp, $att, $def){
       //TODO: complete behavior
    } 
}

Ce constructeur permet d'initialiser les attributs de notre instance lors de sa création.

Complétez le constructeur de notre classe puis instanciez plusieurs objets de type Warrior et enfin manipulez les.

Exercice

Nous avons vu comment créer des guerriers plus haut, à vous de réaliser les choses suivantes: