Trace:
Differences ¶
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
en:features [2008/01/31 22:27] – bballizlife | en:features [2008/12/22 17:24] – goofy | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== General informations ====== | ====== General informations ====== | ||
- | Jelix is a framework for PHP5, whose objective | + | Jelix is a framework for PHP5, whose purpose |
Here is what is proposed to developers: | Here is what is proposed to developers: | ||
Line 10: | Line 10: | ||
These characteristics allow a better re-use of the code, a capitalization of know-how, a better organization in the development, | These characteristics allow a better re-use of the code, a capitalization of know-how, a better organization in the development, | ||
- | Jelix uses to the maximum of specificities | + | Jelix makes the most of PHP5.2 features, in order to be the lightest and most powerful possible. This is why a project based on Jelix is 100% object oriented. |
+ | |||
+ | ====== Goals ====== | ||
+ | |||
+ | We develop Jelix by keeping these words in mind: | ||
+ | |||
+ | * **Performance**: | ||
+ | * **Simplicity**: | ||
+ | * **Flexibility**: | ||
+ | * **Robustness**: | ||
+ | * **Pragmatism**: | ||
====== Features ====== | ====== Features ====== | ||
- | ===== Original functions and characteristics ===== | + | ===== Original functions and characteristics ===== |
- | * **Modular architecture** : an application can be cut out in several reusable modules. | + | |
- | * **Minimal guarantee on the data exchange** : Jelix controls the generation of output formats according to the type of request. For example, if we have a request for a XML-RPC web service, we cannot generate HTML, the answer will be obligatorily | + | * **Modular architecture** : an application can be cut out in several reusable modules. |
- | * **Generation of technical errors in specified format** : thanks to the Jelix system described before, all the technical errors are returned in the format awaited by the client. For example: no HTML formatted error when client is awaiting XML-RPC or RDF response. | + | |
- | * **Light and evolutionary template engine (jTpl)**, with a syntax halfway between Smarty and PHP. A plugin system like in Smarty is also available. | + | |
- | | + | |
- | * **Designation | + | |
- | * **Event system** allowing module-to-module communication. | + | * **Light |
- | * **Overload | + | |
+ | | ||
+ | * **Designation of files and resources by selectors**, | ||
===== Modern functions and characteristics | ===== Modern functions and characteristics | ||
Functions that we don’t find so often in frameworks: | Functions that we don’t find so often in frameworks: | ||
- | * **Web Services** : Jelix deals with analysis of the content of requests, and the generation of the response. | + | * **Web Services** : Jelix deals with analysis of the content of requests, and the generation of the response. |
* **Handling of RESTfull** : by simple implementation of an interface: one can easily define what is done after HTTP GET/ | * **Handling of RESTfull** : by simple implementation of an interface: one can easily define what is done after HTTP GET/ | ||
+ | * **Generic CRUD**: Jelix provides a generic controller to build a CRUD interface which then allows to manage records of a SQL table (Create, Read, Update, Delete and list). Only a jForms file, a jDao file and few lines of code are required. | ||
* **Themes system**: it is possible to define several templates, each one redefining the template of modules. | * **Themes system**: it is possible to define several templates, each one redefining the template of modules. | ||
- | * **Automatic system for URL generation and mapping** : no complete | + | * **Automatic system for URL generation and mapping** : no hard-coded |
- | * **PHP scripts for code generation** to execute in command | + | * **PHP scripts for code generation** to execute in the command |
* **Technical cache system** : almost all non PHP files of a Jelix project "are compiled" | * **Technical cache system** : almost all non PHP files of a Jelix project "are compiled" | ||
* **UTF-8 compliant**: | * **UTF-8 compliant**: | ||
* **Module dedicated to unit tests**: unit tests are essentials to create a reliable application. So Jelix provide a module which has an interface to launch unit tests and a simple way to create unit tests (using simpleTest) | * **Module dedicated to unit tests**: unit tests are essentials to create a reliable application. So Jelix provide a module which has an interface to launch unit tests and a simple way to create unit tests (using simpleTest) | ||
- | |||
- | |||
- | |||
===== Traditional functions and characteristics | ===== Traditional functions and characteristics | ||
+ | |||
Functions which one finds in many frameworks: | Functions which one finds in many frameworks: | ||
* **The architecture of the core is MVC type** (Model-View-Controller). A coordinator handles the execution of an action according to the parameters in the URL. The possible actions are implemented in classes of jController type (controllers). | * **The architecture of the core is MVC type** (Model-View-Controller). A coordinator handles the execution of an action according to the parameters in the URL. The possible actions are implemented in classes of jController type (controllers). | ||
Line 49: | Line 61: | ||
* **System of authentication and rights management**. | * **System of authentication and rights management**. | ||
* Use of XML: declaration of the events, DAOs etc, ... That makes it possible to facilitate writing, generation and modifying these parts of a project by third-party tools (for example with JelixEclipse, | * Use of XML: declaration of the events, DAOs etc, ... That makes it possible to facilitate writing, generation and modifying these parts of a project by third-party tools (for example with JelixEclipse, | ||
- | |||
- | |||
- | |||
===== How does Jelix work ===== | ===== How does Jelix work ===== | ||
Line 59: | Line 68: | ||
- an HTTP request calls Jelix. Jelix creates an instance of a jRequest object which contains datas of the request. It then create an instance of your controller which corresponds to the asked action. | - an HTTP request calls Jelix. Jelix creates an instance of a jRequest object which contains datas of the request. It then create an instance of your controller which corresponds to the asked action. | ||
- A method | - A method | ||
- | - Then the method execute business processes, et retrieves eventually some results which will be used for the response | + | - Then the method execute business processes |
- The method of the controller create an instance of a jResponse object which is setup with datas or else (initialization of templates etc..). | - The method of the controller create an instance of a jResponse object which is setup with datas or else (initialization of templates etc..). | ||
- | - Jelix gets this jResponse object, launch the generation of the final document (html page, pdf..) and then send it to the browser. | + | - Jelix gets this jResponse object, launch the generation of the final document (html page, pdf..) and then sends it to the browser. |
====== Your first application ====== | ====== Your first application ====== | ||
Read the [[en: | Read the [[en: |