Bonjour à tous,

Je dev un plugin pour le CMS PluXml et je rencontre un problème avec les class.

Mon plugin est composé d'une class principal "portail" qui hérite de class native de PluXml : plxPlugin qui est la partie chargé de gérer les plugins. Pour simplifier la maintenance de mon plugin j'ai créé autant de fichiers class que de type de class et souvent une sous-class doit pouvoir accéder à une fonction d'une autre class.

Ci-dessous le code de portail.php, j'ai supprimé tout ce qui concerne PluXml

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
include __DIR__.'/include/portailUtils.php';
include __DIR__.'/include/portailItm.php';
include __DIR__.'/include/portailExports.php';
include __DIR__.'/include/portailClients.php';
include __DIR__.'/include/portailAdv.php';
include __DIR__.'/include/portailCrm.php';
include __DIR__.'/include/xlsxwriter.class.php';
 
class portail extends plxPlugin {
	private $_database = false;
	private $_portailUtils = false;
	private $_portailItm = false;
	public $_portailExports = false;
	private $_portailClients = false;
	private $_portailAdv = false;
	private $_portailCrm = false;
	private $_xlsxWriter = false;
 
	public function __construct($default_lang) {
		parent::__construct($default_lang);
 
		if(!class_exists('portailUtils')) { die('class portailUtils absent'); }
		$this->_portailUtils = new portailUtils($this->_database);
 
		if(!class_exists('xlsxWriter')) { die('class xlsxWriter absent'); }
		$this->_xlsxWriter = new xlsxWriter();
 
		if(!class_exists('portailClients')) { die('class portailClients absent'); }
		$this->_portailClients = new portailClients($this->_database, $this->_portailUtils);
 
		if(!class_exists('portailItm')) { die('class portailItm absent'); }
		$this->_portailItm = new portailItm($this->_database, $this->_portailUtils, $this->_portailAdv);
 
		if(!class_exists('portailAdv')) { die('class portailAdv absent'); }
		$this->_portailAdv = new portailAdv($this->_database, $this->_portailUtils, $this->_portailItm, $this->_portailClients);
 
		if(!class_exists('portailCrm')) { die('class portailCrm absent'); }
		$this->_portailCrm = new portailCrm($this->_database, $this->_xlsWriter, $this->_portailUtils, $this->_portailItm, $this->_portailClients, $this->_portailAdv);
 
		if(!class_exists('portailExports')) { die('class portailExports absent'); }
		$this->_portailExports = new portailExports($this->_database, $this->_xlsxWriter, $this->_portailUtils, $this->_portailItm, $this->_portailCrm, $this->_portailClients, $this->_portailAdv);
	}
[...]
Mon problème est que pour la class _portailItm j'ai besoin de la class _portailAdv que je déclare juste après tout simplement parce que pour la class _portailAdv j'ai besoin de la class _portailItm... C'est le serpent qui se mord la queue

Est-ce qu'il y a une autre méthode pour déclarer mes class sans tombé dans le problème de dépendance ?

Merci d'avance.