Section: Application entry points and jApp
« Selectors | ^ Core workflow | Request object » |
− Table of content
Entry points ¶
An entry point is a script which execute a part or all your application actions.
We can call them "boostrap" too.
Only entry points should be accessible from the web and therefore should lie in www/
directory of your application. It should exist an entry point for each type of request that
you want to use (normal, soap, xml-rpc ...). As a result, each entry point should also have
its specific configuration file.
An entry point initializes the Jelix environment, creates a jCoordinator
object, a
jRequest
object (to parse all request parameters) and indicates which configuration
file to use. For a normal entry point (like index.php
), the code looks like this:
// application initialization file
require_once ('../application.init.php');
// load the configuration file
jApp::loadConfig('index/config.ini.php');
// create the jCoordinator object and set it in the Jelix environment
jApp::setCoord(new jCoordinator());
// jRequest object
require_once (JELIX_LIB_CORE_PATH.'request/jClassicRequest.class.php');
$request = new jClassicRequest();
// action processing (routing, controller execution...)
jApp::coord()->process($request);
You'll create several entry points in these case:
- an entry point for each type of request
- an entry point dedicated to some modules
If you want to access to same actions of a module through several entry points, it is not possible. If you really need such architecture, probably you need several application instead, or to split your module. Several applications can share the same database, share some of there modules or share the same www directory.
jApp ¶
As you can see, the entry point call a class, jApp
, which is initialized in the
application.init.php
file. This object contains only static methods.
This is a "central" object, because it contains informations about the runtime environment of the application. You will often use it in your modules.
This object contains first the configuration of the application (set with the loadConfig()
method),
and main objects used by Jelix components, such as the coordinator (set with the setCoord()
method).
You may call it in your class to access to all of this resources.
$config = jApp::config(); // to retrieve the object containing the current configuration
$coord = jApp::coord(); // to retrieve the coordinator, which contains many useful information
This object contains also all paths to different important directories of the application. You can retrieve them with these specific methods:
$path = jApp::appPath(); // the full path of the application directory
$path = jApp::varPath(); // the full path of the var directory of the application (var/)
$path = jApp::logPath(); // the full path of the log directory of the application (var/log)
$path = jApp::appSystemPath();// the full path of the static config directory of the application (app/system)
$path = jApp::varConfigPath();// the full path of the variable config directory of the application (var/config)
$path = jApp::wwwPath(); // the full path of the web directory of the application (app/www)
$path = jApp::scriptsPath(); // the full path of the scripts directory of the application (app/scripts)
$path = jApp::tempPath(); // the full path of the temp directory corresponding to the entry point (temp/app/www/)
$modulePath = jApp::getModulePath('myModule'); // the full path to a module
You can give a filename to these methods (except getModulePath
), it will be append to the path.
It is highly recommended to use these methods instead of having hard coded path in your modules.
To know more, see the dedicated chapter.