Kelix was developed with pragmatism, ease of use, simplicity, performance, flexibilioty and robustness in mind.
It comes with an API dealing with numbers of technical aspects: data access, MVC model, templates, output format generators (HTML, XUL,…), Web services (xml-RPC, json-RPC), forms generator, CRUD, authentication, rights management, localization, etc…
A modular structure and an organization of the files of the project is present, imposing a framework and some developing standards.
A “layer” organization of the project splits content into: presentation, coordination, service, business, persistence.
Here are some key features of "Jelix":
· 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/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.
· 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 “static” SQL queries, allowing the best performance.
· 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, and not by physical ways, then bringing a certain independence to a module towards the installation.
· 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.
· 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.
· 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 (mod_rewrite & co).
· 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” 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)
· 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.
· PHP 5.3 or higher
What's New in This Release: [ read full changelog ]
· PHP 5.3 and higher is required. No more support for PHP 5.2.
· jResponseHtml now generates an HTML5 header.
· New hashing system in jAuth.
· New modules.