Section: jApp: directories of the application
|^ Class utilities||jFilter: verifying and filtering datas »|
− Table of content
jApp is a class bringing informations about the Jelix environment.
It allows to specify (in application.init.php) and to retrieve, different path of the application.
It proposes also some methods to retrieve some global Jelix Object and to manipulate Jelix environment (internal use).
Access to some global objects ¶
// the configuration object $config = jApp::config(); //the router $coord = jApp::coord();
There is also
jApp::version() which allows to know the version of the
application when there is a
VERSION file in the application directory.
If you want to know the version of Jelix, you'll use
Retrieving URL path to the application ¶
To create URL, you'll often need the "basePath" value that is available into the configuration, and automatically calculated by the framework when you didn't specified it yourself. This method allow to retrieve easily this path:
$path = jApp::urlBasePath(); // old way to retrieve this path: jApp::config()->urlengine['basepath']
You can also retrieve the URL path to web assets provided by Jelix (from lib/jelix-www).
$path = jApp::urlJelixWWWPath();
Retrieving all miscellaneous physical path ¶
jApp is configured during the startup of the application, in the file application.init.php. In particulary, path to different components of the application are set in it.
appPath() returns the full path of the application.
$path = jApp::appPath();
To have the path to the temp directory, call the method
$path = jApp::tempPath();
Other path are available:
// the path to the var/ directory of the application $path = jApp::varPath(); // the path to the var/log/ directory of the application $path = jApp::logPath(); // the path to the app/system/ directory of the application $path = jApp::appSystemPath(); // the path to the var/config/ directory of the application $path = jApp::varConfigPath(); // The old method jApp::configPath() is also available but is deprecated // the path to the www/ directory of the application $path = jApp::wwwPath(); // the path to the scripts/ directory of the application $path = jApp::scriptsPath();
You can give a sub-path or a file to these previous method, to have the full path.
You can also retrieve the path to the main configuration file of the application:
// the path to mainconfig.ini.php $path = jApp::mainConfigFile();
You can retrieve the path to a specific module:
$path = jApp::getModulePath('my_module');
Configuring jApp ¶
In the application.init.php file, you declare all different path of the application we saw above.
You do it with the
jApp::initPaths( __DIR__.'/' //__DIR__.'/www/', //__DIR__.'/var/', //__DIR__.'/var/log/', //__DIR__.'/var/config/', //__DIR__.'/scripts/' ); jApp::setTempBasePath(realpath(__DIR__.'/temp').'/');
This class contain also methods to indicate where Jelix can find modules and plugins:
// declare a list of directories containing modules jApp::declareModulesDir(array( __DIR__.'/../lib/jelix-modules/', __DIR__.'/../lib/jelix-admin-modules/', __DIR__.'/modules/' )); // declare a list of directories containing plugins jApp::declarePluginsDir(array( __DIR__.'/../lib/jelix-plugins/', __DIR__.'/plugins' )); // declare the path to a module jApp::declareModule(__DIR__.'/my-module/');
Note that if you want to install Jelix and modules via Composer, these methods are called automatically with path of modules containing in packages. So in the example above, declaring jelix-modules and jelix-admin-modules is useless. It is only useful when you install jelix from a zip.
In the entry point, you have also to say what is the configuration file to use, and the router (coordinator) to use.
jApp::loadConfig('index/config.ini.php'); jApp::setCoord(new jCoordinator());
In case when the
application.init.php is not in the main directory of the application (so, not into the directory
project.xml file), you must call