À propos de ce tutoriel
Le Factory est un design pattern incontournable qui va vous permettre de beaucoup mieux structurer vos classes. Le principe est d'avoir une classe qui va se charger de créer les objets dont on a besoin.
Un anneau pour les gouverner tous
Pour commencer nous allons prendre un exemple simple.
<?php
class Voiture
{
private $marque;
public function __construct($marque)
{
$this->marque = $marque;
}
public function getName()
{
return 'Voiture ' . $this->marque;
}
}
class VoitureFactory
{
public static function create($marque)
{
return new Voiture($marque);
}
}
$twingo = VoitureFactory::create('Twingo');
$c3 = VoitureFactory::create('C3');
La classe factory contient donc des méthodes statiques qui permettent de retourner des instances.
Pour aller plus loin
Le factory créé précédemment est relativement simple et n'offre que peu d'intérêt. On peut aller plus loin en créant une méthode qui prendra des paramètres pour instancier plusieurs classes en une seule fois.
<?php
class ArticleTable(){ }
class VoitureTable(){ }
class UtilisateurTable(){ }
class TableFactory(){
public static function create($table){
$class_name = ucfirst($table) . 'Table';
return new $class_name();
}
}
TableFactory::create('Article');