Raccourcis : Contenu - rubriques - sous rubriques
EN FR

jApp est une classe comportant des informations sur l'environnement Jelix.

Elle permet ainsi de spécifier (dans le application.init.php) et de récupérer les différents chemins de l'application.

Elle propose également des méthodes permettant de récupérer les objets les plus courant de l'environnment Jelix, et aussi de manipuler l'environnement (mais à usage plutôt interne à Jelix)

Accéder aux objets principaux


// La configuration :
$config = jApp::config();

// le routeur (coordinateur)
$coord = jApp::coord();

Il y a aussi jApp::version() qui permet de connaître la version de l'application, si un fichier VERSION est présent dans le répertoire de l'application.

Si vous voulez connaître la version de Jelix, vous utiliserez jFramework::version().

Récupérer des chemins URL de l'application

Pour former des URLs, vous aurez souvent besoin de la valeur "basePath" situé dans la configuration, et généré automatiquement quand elle n'est pas configuré à la main. Cette méthode permet de récupérer ce chemin facilement :


$path = jApp::urlBasePath();

Vous pouvez aussi récupérer le chemin URL vers les assets fournies par Jelix, celles qui sont initialement dans le répertoire lib/jelix-www :


$path = jApp::urlJelixWWWPath();

Les chemins des différents répertoires de l'application

En général, jApp est configuré dés le démarrage de l'application, dans le fichier application.init.php. En particulier, les divers chemins des composants de l'application y sont indiqués, comme vous pourrez le voir plus bas. Divers méthodes permettent alors de les récupérer.

La méthode appPath() permet de retourner le chemin absolu de votre application.



$chemin = jApp::appPath();

La méthode tempPath() permet de retourner le chemin absolu du temporaire.


$chemin = jApp::tempPath();

D'autres chemins sont aussi disponibles :


// chemin du répertoire var/ de l'application
$path = jApp::varPath();

// chemin du répertoire var/log de l'application
$path = jApp::logPath();

// chemin du répertoire app/system/ de l'application
$path = jApp::appSystemPath();

// chemin du répertoire var/config/ de l'application
$path = jApp::varConfigPath();
//l'ancienne méthode jApp::configPath() est encore disponible mais est dépréciée.

// chemin du répertoire www/ de l'application
$path = jApp::wwwPath();

// chemin du répertoire scripts/ de l'application
$path = jApp::scriptsPath();

Vous pouvez donner un nom de fichier (ou sous-chemin) en paramètre à ces méthodes, il sera ajouté au chemin demandé.

Vous pouvez également récupérer le chemin du fichier de configuration principal :


// chemin de mainconfig.ini.php
$path = jApp::mainConfigFile();

Vous pouvez aussi récupérer le chemin d'un module particulier :


$path = jApp::getModulePath('nom_module');

Configurer jApp

Dans le fichier application.init.php, vous déclarer les différents chemin des composants de l'application, que ce soit les chemins des répertoires de configuration, ou les chemins des répertoires de modules.

Avec initPaths() et setTempBasePath() vous définissez les chemins principaux :


jApp::initPaths(
    __DIR__.'/'
    //__DIR__.'/www/',
    //__DIR__.'/var/',
    //__DIR__.'/var/log/',
    //__DIR__.'/var/config/',
    //__DIR__.'/scripts/'
);
jApp::setTempBasePath(realpath(__DIR__.'/temp').'/');

Cette classe contient également les méthodes pour indiquer les répertoires de modules, de plugins etc :

Exemple :


// déclarer une liste de répertoires contenant des modules
jApp::declareModulesDir(array(
                        __DIR__.'/../lib/jelix-modules/',
                        __DIR__.'/../lib/jelix-admin-modules/',
                        __DIR__.'/modules/'
                    ));
// déclarer une liste de répertoires contenant des plugins
jApp::declarePluginsDir(array(
                        __DIR__.'/../lib/jelix-plugins/',
                        __DIR__.'/plugins'
                    ));

// déclarer un répertoire correspondant à un module
jApp::declareModule(__DIR__.'/mon-module/');

Notez que si vous installez Jelix et des modules via Composer, ces méthodes sont appelées automatiquement avec les bons chemins. Ainsi, dans l'exemple ci-dessus, il déclare les répertoires jelix-modules et jelix-admin-modules qui sont fournis avec Jelix, mais cela n'est valable que si on a installé Jelix à la main, à partir d'un archive.

Cependant ces méthodes restent utiles quand vous avez des répertoires de modules propres à votre application.

Dans le point d'entrée, vous définissez également le fichier de configuration et le coordinateur à utiliser :


jApp::loadConfig('index/config.ini.php');
jApp::setCoord(new jCoordinator());

Dans le cas très particulier où application.init.php n'est pas dans le répertoire principal de l'application (donc n'est pas dans celui contenant project.xml), vous devez appeler jApp::setApplicationInitFile(__FILE__) dans le fichier application.init.php.