6.Le langage PHP

6.8.Programmation orientée objet

6.8.1.Introduction

Initialement langage purement procédural, PHP s'est petit à petit enrichi de la possibilité de faire de la programmation orientée objet. Cela a commencé avec PHP 4 mais s'est surtout imposé avec PHP 5 et cela nous semble maintenant difficile de programmer sérieusement en PHP sans avoir recours à la programmation objet (POO).
L'objet de ce chapitre n'est pas de présenter ce qu'est la programmation orientée objet[c'est quoi?] mais de vous indiquer comment cela se met en place dans PHP.
Nous verrons donc:
A noter: Si vous souhaiter simplement manipuler une classe existante (à commencer par les classes "natives" PHP), vous pouvez donc sauter directement au chapitre décrivant comment utiliser ces classes et méthodes.
En bref:
Même si le code ci-dessous n'a guère de sens, il présente à peu près l'ensemble des instructions que l'on peut retrouver en programmation orientée objet en PHP et que nous développons dans les chapitres suivants.
<?php
namespace PHPFacile\Tuto;

use BibliothequeAutre\CoolClasse;
use BibliothequeAutre2\CoolClasse as CoolClasse2;

abstract class MaClasseAMoi extends CoolClasse implements MonInterface1, MonInterface2
{
    const MA_CONSTANTE_DE_CLASSE = 'constante';
    protected $maVariableMembre;

    abstract public function maMethodeAbstraite($param);

    public function __construct($param)
    {
        $this->maVariableMembre = $param;
    }

    public function maMethode()
    {
        try {
            $val = self::maMethodeStatique($this->maVariableMembre);
        } catch (\Exception $e) {
            // Exception levée
        } finally {
            // Depuis PHP 5.5
        }
    }

    public static function maMethodeStatique($param)
    {
        if ($param instanceof CoolClasse) {
            echo '$param est une instanciation "directe" de CoolClasse ou hérite de CoolClasse';
        }
    }

    protected function maMethodeProtegee($param)
    {
        // get_class() retourne le nom de la classe sous forme de chaîne de caractères
        return get_class($param);
    }

    final private function maMethodePriveeEtFinale($param)
    {
        return self::MA_CONSTANTE_DE_CLASSE;
    }
}
<?php
namespace PHPFacile\Tuto;

interface MonInterface1
{
    const MA_CONSTANTE_DE_CLASSE_2 = 'constante';

    public function maMethode();
}