<?php 
abstract class Module
{
	/**
	* Liste des paramètres du module en concordance avec le "config.xml"
	* Ses éléments ne peuvent être modifiés
	* @var array
	*/
	protected static $paramsList = array();
	
	// Nom du module (aka le nom de la classe en minuscule)
	protected $moduleName;
	
	// Libellé du module (aka le nom affiché)
	protected $moduleTitle;
	
	// Le chemin vers le module
	protected $pathToModule;
	
	/**
	* Liste des paramètres et leurs valeurs de l'object
	*
	* @var array
	*/
	public $params = array();
	
	private function setParams($params){
		$this->params = $params;
	}
	
	abstract static function start($params);

	public static function updateConfig($updated){
		foreach ($updated as $what=>$withWhat){
			if(in_array($what, self::$paramsList)){
				call_user_func(array(get_class(), "set".ucfirst($what)), $withWhat);
			}
		}
	}
	
}