Jelix 1.0.3 / 1.0.4 Pre

Jelix is an open-source PHP5 framework which help you to develop any kind of web applications.

  Add it to your Download Basket!

 Add it to your Watch List!


Rate it!
send us
an update
GPL (GNU General Public License) 
2.6/5 9
Laurent Jouanneau
ROOT \ Internet \ HTTP (WWW)
1 Jelix Screenshot:
Jelix is an open-source PHP5 framework which help you to develop any kind of web applications:


· High performance: designed for huge-loaded web sites.
· Fully object oriented, highly modular and extensible.
· Made on known design pattern: MVC, DAO..
· Support natively many output format: XHTML, XUL, RSS, ATOM, RDF, ZIP, XML, PDF, etc.
· Make web services developement easier : XML-RPC, JSON, and other Ajax stuffs.
· Include a powerful form system to create all kind of forms, including CRUD forms.

Here are some key features of "Jelix":

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 in XML-RPC. Si it offers a certain robustness of the application in client/server communication. (Unless the developer does not use objects from Jelix, because indeed nothing prevents from making an echo of anything anywhere).
· 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.
· 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, and not by physical ways, then bringing a certain independence to a module towards the installation.
· Event system allowing module-to-module communication.
· Overload 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 third module.

Modern functions and characteristics

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. XML-RPC and JSON-RPC are handled. Other types of services Web are completely possible (SOAP,…).
· Handling of RESTfull : by simple implementation of an interface: one can easily define what is done after HTTP GET/POST/PUT/DELETE requests.
· 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 URL in Jelix. The framework has the responsibility to generate urls in the templates or elsewhere, according to the configuration of URL mapping defined on actions (mod_rewrite & co).
· PHP scripts for code generation to execute in command liner, 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" in PHP in order to improve the performances (templates, DAO, events etc.).
· UTF-8 compliant: it's the default encoding of the framework
· 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

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).
· Jelix provide several output generators (jResponse objects): XHTML, CSS, ATOM, RSS, XML, RDF, XUL, XUL overlay, ZIP, PDF (from Latex source files or 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.
· Localization: you can have your application translated in several languages. Storage of localized string is done in properties files.
· 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, an eclipse plugin), and thus to increase productivity.

How does Jelix work

1. 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.
2. A method in the controller is executed. It retrieves request parameters in order to know which process to run.
3. Then the method execute business processes and retrieves eventually some results which will be used for the response
4. The method of the controller create an instance of a jResponse object which is setup with datas or else (initialization of templates etc..).
5. Jelix gets this jResponse object, launch the generation of the final document (html page, pdf..) and then sends it to the browser.

What's New in 1.0.3 Stable Release:

Updating from Jelix 1.0.2

This release fix only some few little bugs. You can update jelix safely and you don't have to do change in your source code. Here instructions:

· You can replace safely the lib directory by the new one provided in the jelix 1.0.3 package.
· delete all files in the temp/ directories

Little improvements

· createapp creates now a default html response and a default template (#496, #480, #516)
· added flag to generate or no xml prolog in jResponseXml (#465)
· better error handling in cli context (#408)
· added support of Session Name in jSession (#417)
· added default properties files in iso-8859-15 (#473)
· added postgresqlSQL scripts for install
· new method in jControllerDaoCrud to allow to setup our own conditions for the record list (#487)
· new plugin 'image' for jtpl (#474)
· support of CR and LF in firebug log (#500)
· session are now disabled in a CLI context (#445)

Bugs fixed

· Error in jDaoRecord: unknow jLocale::timestampToDate (#445)
· module name are transformed with strtolower when using createapp or createmodule command (#456)
· error in jSelectorTpl when using a template before the creation of a response (#466)
· bad error management when a response doesn't exist (#462)
· notice error in jResponseXml (#464)
· fixed a little bug in pagelinks plugin, some links were not disabled (#475)
· fixed bug in form plugin : bad check of the parameters number (#481)
· fixed bug, formcontrols: it shouldn't display submit control if there is a single submit (#482)
· html builder : cols and rows attributes are required on textarea (#484)
· jResponseZip : addHttpHeaders didn't exist (#488)
· jResponseZip : impossible to set the name of the zip (#494)
· fixed a bug on the count of unit tests in junitests module
· bad error message in jDaoCompiler (#492)
· no cmdline controller by default when creating a cmdline application (#418)
· fixed bug about infinite loop with non-existent charset (#442)
· fixed bug in jDbTools::execSQLScript for mysql and pgsql driver (#813)
· call of a deprecated method of jTpl in jZone (#508)
· in some case, no error when an ini file is invalid (#470)
· moved some session configuration process from jCoordinator into jSession. (#504)
· fixed an exception thrown during the execution of jelix-scripts.
· jFile::removeDir crash if there are a link inside (#519)
· added jSelectorIface and made jSelectorInterface deprecated (#522)
· fixed a little bug in jZone::clearAll (#526)
· jInstallChecker should not warn about magicquotes if the plugin magicquotes is activated. (#515)

What's New in 1.0.4 Pre Development Release:

Updating from Jelix 1.0.3

This release fix only some few little bugs. You can update jelix safely and you don't have to do change in your source code. Here instructions:

· You can replace safely the lib directory by the new one provided in the jelix 1.0.4 package.
· delete all files in the temp/ directories

Little improvements

· Added a configuration parameter "start" to disable sessions (#506)
· < script / > tags didn't end with a newline in jResponseHtml (#536)
· new template plugin: image shadow (#502)
· jLocale now works with language code without country (#95)

Bugs fixed

· fixed bug in jFormsBase::saveToDao
· fix bug in sqlite.daobuilder : insert() query generated in the dao always used the autoincrement field even if it was not provided

Last updated on April 29th, 2008

#web development #PHP framework #development framework #PHP #PHP5 #web #development

Add your review!