Welcome to ActiveWAFL!

This manual should give you the information you need to start developing ActiveWAFL applications. If you are looking for more advanced topics, check out the How To's or try the links under the Reference menu.

Using an IDE with ActiveWAFL

It is recommended that you develop ActiveWAFL applications in an IDE that provides code-hints, such as Netbeans or Eclipse. To enable code-hints, download a local copy of ActiveWAFL + DblEj and add both paths to the project's include files.

What the "includes" section should look like for an ActiveWAFL application in Netbeans 8.
The value of the paths may be different, depending on where you installed ActiveWAFl and DblEj.

Terminology

These terms will pop-up often when discussing ActiveWAFL, so it's a good idea to get familiar with them.

Application
Program that encapsulates some amount of related data, functionality, and/or UI's.
Applications implement DblEj\Application\IApplication.
Counterpart Compliant
A Counterpart Compliant class is one who's state can be transferred between the server-side and client-side and who's data can be accessed equally from either side.
DblEj
Pronounced like the words "Double Edge".
Class library for PHP and Javascript Web development.
Presentation Stylesheet
File (usually CSS) that contains styling instructions for Presentation Templates.
Presentation Template
File (usually HTML) that contains content to be displayed in the client and uses placeholders for dynamic data or other presentation-related information and logic.
By default, Presentation Templates have a .tpl extension.
Syrup File (.syrp)
Human and machine readable heirarchical settings file.
Most application configuration files are in the Syrup format.
Utensils
Interactive command-line application for creating ActiveWAFL applications, generating phar files, creating extensions, creating controls, and other useful utilities.
Wafl (or WAFL)
Pronounced like the word "waffle".
Short-form for "ActiveWAFL framework", a framework for Web Application Development.
Wafl Cones
Demonstration MVC Web Application.

Namespaces

Root Namespaces

There are three root namespaces you will work with on a regular basis while developing in ActiveWafl.

Your application's namespace
Every ActiveWafl application has a top-level namespace for all of the code specific to that application.
Contains an application's Data Models, Functional Models, Request Handlers / Mvc Controllers, Presentation Templates, utilities, and API Handlers.
Other than Global Event Handlers and Global Scripts, all of your application's code should be beneath this namespace.
DblEj
Web development library (PHP + Javascript)
Contains interfaces and classes for things like server-side: collections, remote communications, cryptography, data access, event handling, extensibility, MVC, data parsing, graphics, resources, site structure, users, access control, client-side: visual effects, dom access and manipulation, css management, ajax/http, parsing, extensibility, ux elements, transformation, event handling, tracing, data access, traditional class inheritence, javascript namespaces.
The majority of most ActiveWAFL applications are coded against the DblEj library.
Wafl
ActiveWAFL framework library (PHP + Javascript)
High-level implementations, injectible chains of responsibility, extensions, controls, utilities, tools, stubs, bootstrappers, autoloaders.
While ActiveWAFL applications will interact with this namespace, most of it's members exists to support framework-level functionality.

Application File Structure

Below is the file structure of the Wafl Cones application from the ActiveWAFL crash course.

Acknowledgments