Section: Application entry points and jApp
|« Selectors||^ Core workflow||Request object »|
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
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.
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
and main objects used by Jelix components, such as the coordinator (set with the
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.