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/09/26 22:37] – laurent | ||
---|---|---|---|
Line 11: | Line 11: | ||
Jelix uses to the maximum of specificities of PHP5, in order to be the lightest and most powerful possible. This is why a project based on Jelix is 100% object oriented. | Jelix uses to the maximum of specificities of PHP5, 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 this 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. | * **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 | + | * **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 always |
* **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. | * **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. | ||
+ | * **jDao, object-relational mapping**, based on the DAO design pattern (Data Access Object). Declared in XML files, automatic generation of its SQL requests, handling of security problems (SQL injection etc…). jDao generates some PHP classes containing " | ||
+ | * **jForms, a form generator**: | ||
* **Light and evolutionary template engine (jTpl)**, with a syntax halfway between Smarty and PHP. A plugin system like in Smarty is also available. | * **Light and evolutionary template engine (jTpl)**, with a syntax halfway between Smarty and PHP. A plugin system like in Smarty is also available. | ||
- | * **jDao, object-relational mapping**, based on the DAO design pattern (Data Access Object). Declared in XML files, automatic generation of its SQL requests , handling of security problems (SQL injection etc…). | ||
- | * **Designation of files and resources by selectors**, | ||
* **Event system** allowing module-to-module communication. | * **Event system** allowing module-to-module communication. | ||
- | * **Overload | + | * **Overloading of file** : it is possible to redefine some files of a module without changing the originals (DAO, templates, properties..). Useful when a module is used by several applications at the same time, or to facilitate the update of a module from a third party. |
+ | * **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**: | ||
Line 38: | Line 52: | ||
+ | ===== 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: |