Application object is the main object of ImpressPages core which initializes the application and handles the request. It is used in index.php file and should rarely be used in a controller or anywhere else unless you would like to execute a sub request. It's methods can be accessed using ipApplication() function.
Request execution flow
On each page request application executes the following flow of events, filters and jobs. In 99% of the cases you will use ipBeforeController event and ipSendResponse filter. The rest are implemented just to make the system infinitely flexible.
|Job||ipRouteLanguage||Used to find out the language of a current request. It should be used only if you would like to change the way multilingual URL's are handled on ImpressPages or so.|
|Event||ipInitFinished||Fired as soon as main ImpressPages components are up (autoloader, translations, events, filter, jobs, etc.)|
|Job||ipRouteAction||Used to find out current controller and action to be executed. It should be used only if you want to implement your own router or so.|
|Job||ipDefaultPageId||Used to find out the default Page ID if the root of the website is accessed. May not be executed in some scenarios.|
|Event||ipBeforeController||The most common event do actions on your plugin. On this event, you can add CSS or JS to the page, collect stats, etc.|
|Job||ipExecuteController||Used to execute the controller. Use it only if you want to change the way controller action is being executed|
Use this filter to modify the response just before it is being send. You can also replace existing response object with yours. Use it to
|Event||ipBeforeResponseSent||Response has been sent to the client.|
|Event||ipBeforeApplicationClosed||Do any actions you need before the database connection will be closed.|
HMVC (Hierarchical Model–View–Controller)
You can use ipApplication()->handleRequest() method to call MVC controller directly from within your code.
<?php $request = new \Ip\Request(); $request->setQuery( array( 'pa' => 'MyPlugin.index', // 'pa' key means public controller. // A value contains a plugin name 'MyPlugin' and action name 'index'. )); $answer = ipApplication()->handleRequest($request)->getContent();