> CopixClassesFactory
fr

Présentation

CopixClassesFactory est une classe utilitaire vous permettant d'appeler les classes (qui respectent certaines convention) dans vos applications Copix.

Supposons que vous avez déclaré les classes suivantes dans votre arborescence Copix :


 /modules
 -/module_exemple
 --/classes
 ---/classe1.class.php
 ---/classe2.class.php
 -/module_exemple2
 --/classes
 ---/exemple1.class.php
 ---/exemple2.class.php
 

Vous pouvez utiliser CopixClassesFactory depuis n'importe quelle partie de votre application pour instancier ces classes avec la syntaxe suivante :


$classe1 = CopixClassesFactory::create ('module_exemple|classe1');
$classe2 = CopixClassesFactory::create ('module_exemple|classe2');
$classe1 = CopixClassesFactory::create ('module_exemple2|exemple1');
$classe2 = CopixClassesFactory::create ('module_exemple2|exemple2');
 

Conventions

Les noms de fichier doivent être en minuscules, se nommer nomclass.class.php et contenir la définition de la classe nomclass.

exemple


//dans exemple.class.php
class Exemple {
   //définition de la classe
}

//pourra être appelée via _class ('exemple');
 

API Complète

Create

La méthode create inclut la définition de la classe demandée puis l'instancie.


$uneInstance      = CopixClassesFactory::create ('module_exemple|classe1');
$uneAutreInstance = CopixClassesFactory::create ('module_exemple|classe1');
 

Il existe une fonction raccourcie pour CopixClassesFactory::create qui est _class.

Depuis Copix 3.0.2+, il est possible d'envoyer des paramètres au constructeur de la classe instanciée, en donnant en second argument un tableau des paramètres à envoyer.


$uneInstance      = CopixClassesFactory::create ('module_exemple|classe1', array ('parametre1', 'parametre2'));

//équivaut à
CopixClassesFactory::fileInclude ('module_exemple|classe1');
new Classe1 ('parametre1', 'parametre2');
 

getInstanceOf

La méthode getInstanceOf est identique à la méthode create à l'exception qu'elle va entre plusieurs appels successifs pour un même objet retourner la même instance de l'objet. Cela vous assure de ne manipuler qu'une seule instance de votre classe, ce qui peut parfois être pratique pour ne calculer certaines opération lourdes qu'une seule fois.


$uneNouvelleInstanceAuPremierAppel     = CopixClassesFactory::getInstanceOf ('module_exemple|classe1');
$laMemeInstance                        = CopixClassesFactory::getInstanceOf ('module_exemple|classe1');
 

Il existe une fonction raccourcie pour CopixClassesFactory::getInstanceOf qui est _ioClass.

Vous pouvez gérer des instances uniques "identifiées", en fournissant un second paramètre.


$instance1     = CopixClassesFactory::getInstanceOf ('module_exemple|classe1', 'premier');
$idemInstance1 = CopixClassesFactory::getInstanceOf ('module_exemple|classe1', 'premier');

$instance2     = CopixClassesFactory::getInstanceOf ('module_exemple|classe1', 'second');//instance différente de $instance1
$idemInstance2     = CopixClassesFactory::getInstanceOf ('module_exemple|classe1', 'second');
 

fileInclude

La méthode fileInclude va se contenter d'inclure la définition de votre classe. C'est globalement un alias au morceau de code suivant :


require_once (CopixModule::getPath ('modulename').'classes/maclasse1.class.php');
//est équivalent à
CopixClassesFactory::fileInclude ('modulename|maclasse1');
 

Il existe une fonction raccourcie pour CopixClassesFactory::fileInclude qui est _classInclude.