Trace:
Wiki: Sitemap - Recent Changes - Back link
Differences ¶
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
en:features [2008/09/26 22:37] – laurent | en:features [2019/09/10 08:41] (current) – laurent | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ~~LANG: | ||
+ | |||
====== General informations ====== | ====== General informations ====== | ||
- | Jelix is a framework for PHP5, whose objective | + | Jelix is a framework for PHP 5.6 and 7.x, whose purpose |
Here is what is proposed to developers: | Here is what is proposed to developers: | ||
- | * API dealing with numbers of technical aspects: data access, MVC model, templates, output format generators (HTML, | + | * API dealing with numbers of technical aspects: data access, MVC model, templates, output format generators (HTML, |
* a modular structure and an organization of the files of the project, imposing a framework and some developing standards. | * a modular structure and an organization of the files of the project, imposing a framework and some developing standards. | ||
* a " | * a " | ||
Line 10: | Line 12: | ||
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 | + | Jelix makes the most of PHP 5.6 features, in order to be the lightest and most powerful possible. This is why a project based on Jelix is 100% object oriented. |
====== Goals ====== | ====== Goals ====== | ||
- | We develop Jelix by keeping | + | We develop Jelix by keeping |
* **Performance**: | * **Performance**: | ||
Line 27: | Line 29: | ||
===== 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 always in the XML-RPC format. Si it offers a robustness of the application in client/ | + | |
- | * **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**: | * **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. |
- | * **Event system** allowing module-to-module communication. | + | |
- | * **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. | * **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 hard-coded URL in templates or controllers. The framework has the responsibility to generate urls in the templates or elsewhere, according to the configuration of URL mapping defined on actions | + | * **Automatic system for URL generation and mapping** : no hard-coded URL in templates or controllers. The framework has the responsibility to generate urls in the templates or elsewhere, according to the configuration of URL mapping defined on actions. |
* **PHP scripts for code generation** to execute in the command line, allowing fast creation of various files of a project (module, DAO, template, controller, etc) | * **PHP scripts for code generation** to execute in the command line, allowing fast creation of various files of a project (module, DAO, template, controller, etc) | ||
* **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" | ||
Line 56: | Line 58: | ||
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). | ||
- | * Jelix provide **several output generators** (jResponse objects): XHTML, CSS, ATOM, RSS, XML, RDF, XUL, XUL overlay, ZIP, PDF (from Latex source files or | + | * Jelix provide **several output generators** (jResponse objects): XHTML, CSS, ATOM, RSS, XML, RDF, ZIP, PDF (with TCPDF). Others formats are also possible. |
* **Database access abstraction layer**: jDb relies on PDO or its own classes (when PDO is not available) to access to the databases. | * **Database access abstraction layer**: jDb relies on PDO or its own classes (when PDO is not available) to access to the databases. | ||
* **Localization**: | * **Localization**: | ||
Line 66: | Line 68: | ||
{{http:// | {{http:// | ||
- | - an HTTP request calls Jelix. Jelix creates an instance of a jRequest object which contains datas of the request. It then create | + | - An HTTP request calls Jelix. Jelix creates an instance of a jRequest object which contains datas of the request. It then creates |
- A method | - A method | ||
- | - Then the method | + | - Then the method |
- | - The method of the controller | + | - The method of the controller |
- | - Jelix gets this jResponse object, | + | - Jelix gets this jResponse object, |
====== Your first application ====== | ====== Your first application ====== | ||
+ | |||
Read the [[en: | Read the [[en: | ||
+ |