Overview
Nexista is an Open Source PHP5/XML/XSLT development toolkit based on the Fusebox concept and designed to build large XML/ XSL based web applications. It provides a clean, systematic way to handle: * Content - information, dynamic content, etc... * Logic - php code, database access, authentication, etc.. * Design - site layout, look and feel, user interface, etc... * Flow - Navigation, sub-application logic, sitemappping, etc...
This separation of each areas allows for effective team development, rapid concept prototyping and the use of encapsulated test methodologies.
The development of an application, or website, begins with the creation of a number of special XML definition files are used to delineating the logic and configuration of the application. Once configuration is complete, the build process is activated which renders, or compiles the application from XML into PHP.
To provide XSL the data that it needs, such as the result of database queries, runtime information from validation processes, $GET/$POST data, etc... a special class, called Flow, is used. This class provides a unified interface for all processes to get and post data. At XSL transformation time, Flow provides an XML version of this data pool that can be accesses using standard XSLT/XPath functions.
One of the goal of nexista is to provide the backbone of the application such as handling database connections and queries, data validation, etc... without constraing the developers. For example, user authentication and caching logic is created by the developer in whatever manner they prefer and later 'hooked' into Nexista.
The development process
A basic application will consists of: * The sitemap - an xml definition of all modules for the whole site - see * Configurations file(s) - xml files defining the desired setup * A number of module files such as xsl stylesheets, action definitions, validator definitions, query.pkg files, php scripts, etc...
Once the individual modules files are build, the sitemap created and the configuration files adjusted, the application is then build. The build process, handled by the Foundry class, creates a compiled php file from the sitemap definition as well as the necessary file to handle the logic of presenting these files based on request.
A typical build would output: * A loader file such as index.php which is used as the 'entrance' file for the application. * A switchbox file which is responsible for returning the proper data based on request * A number of 'gate' php files, one for each section or 'page' of the sitemap. They are responsible for handling the per request logic and will load the necessary module files such as query.pkg definitions, php scripts, xsl stylesheets, etc... * A configuration file based on our preferences.
Framework
The core api of Nexista provides module functionality for all connectivity aspects of a web application. This allows developers to not only effectively separate the design and content from logic, but to further divide the logic aspect into discrete logic modules whose expected functionality is clearly delineated. Creating the sitemap as a prototype of the application allows module developers to clearly understand all incoming and outgoing connection from the module, thereby providing a structured framework for their development.
Nexista aims to provide a development methodology as well as a solid framework for the deployment of large web applications. It strives to cover the core functionality necessary to build complex applications while remaining flexible for developers as well as remain manageable for large development groups.
Nexista was built with development speed and ease foremost in mind. We took what we felt were the best aspects of of the Apache Cocoon project, the Fusebox methodology and the Zope object model to create an extensible and scalable development platform for the PHP community.