Develop Modern Web Applications with a Single Unified Framework

ActiveWAFL replaces several disparate libraries and frameworks, such as jQuery, Bootstrap, Zend Framework, and their related plugins and extensions.

Install it Once. Learn it Once. Write it Once.

Server Side

Object-Oriented PHP library.

Client Side

Object-Oriented Javascript library.
EDP, MVC, DAL, ORM, Observer

User Interface

Quickly develop modular user interfaces for mobile and desktop.

  • Responsive CSS3 Library
  • Dynamic CSS
  • Javascript and PHP Templating
  • Smooth Time-Based Animation
  • Cross Platform Web Browser API
  • Native Element Extension Library


Functional Models isolate application logic from the other application tiers.

  • PHP
  • Javascript
  • Utilities, Helpers, and Functions for Common Tasks
  • Interfaces and Integration Points for Generic Implementations


Interact with Data Models that mirror and synchronize with your Data Source.

  • ORM
  • Database Reverse Engineering
  • Search Indexing
  • In-Memory Data Access
  • Disk and Memory Caching
  • Load and Persist Models and Seamlessly Pass them Between the Client (JS) and the Server (PHP)

News and Announcements

from the ActiveWAFL Blog
Jun 15, 2015   11:14 PM

Alternative Client-Side Template Variable Tags

Summary We have introduced an alternative tag for client-side variables in ActiceWAFL.  This is because some browsers, such as Internet Explorer, do not treat the <template> HTML tag correctly.  These browsers attempt to parse the contents of the template even before it is ever used.  As a result, our standard square bracket tags cannot be used in inline javascript code without throwing errors. Standard Client-Side Template Tags The standard tags for a client-side template variable are square brackets.  For example: <template> <h1> Information About [PageTopic] </h1> <p> [PageDescription]. </p> <buttononclick = " document . clientController .[ PageClickMethod ]() " > Click here </button> </template> This template would generate errors in browsers like Internet Explorer, even before even being rendered. New Client-Side Template Tags Starting with...
Mar 3, 2015   7:13 PM

How to Generate a .phar File

There are a few of ways to generate .phar PHP archives with ActiveWAFL. We'll cover all of them here. To use the examples on this page, you need to install ActiveWAFL . The examples below assume that you have ActiveWAFL installed at /usr/share/Wafl. You may need to modify the path to reflect your environment. Interactive Command-LineIf you are generating a phar by hand, then this is probably the easiest way to do it. Use the Utensils command-line application to generate the phar.Open a command prompt / terminal and cd to /usr/share/Wafl/BinRun the Utensils application by typing:Linux: ./UtensilsWindow: UtensilsIf you get an error about permissions or saying that the program does not exist, you may need to run chmod +x Utensils .In the Main Menu, choose option pFolder path : Enter the absolute path to the folder that contains the files to be added to the phar. The folder itself will not be added, but all of it's contents...
Feb 26, 2015   6:43 PM

PHP Fatal error: Cannot create references to elements of a temporary array expression in Wafl/Application/WebApplication.php on line 517

Recently, a user was getting this exception when running the ActiveWAFL crash course application, Waffle Cones .  Specifically, they got it when trying to run the utility script UpdateDataModel . PHP Fatal error:  Cannot create references to elements of a temporary array expression in /Applications/MAMP/htdocs/Wafl/Application/WebApplication.php on line 517 It turns out that this issue only occurs with PHP < 5.5.  So, the solution is to upgrade PHP to 5.5 or newer.  As of this writing, the latest builds of ActiveWAFL are being tested against PHP 5.5.9. Although PHP < 5.5 is not officially supported by ActiveWAFL, we will release a fix/workaround in the next ActiveWAFL release.
Dec 17, 2014   12:50 AM

How to Select HTML Elements from Javascript

DblEj provides several global “selector” helper functions for selecting elements in Javascript on the client-side. All selector functions begin with one or two dollar-signs ($ or $$). $… = Singular selector $$… = Plural selector Singular selectors (those that start with one dollar sign) will always return the first matching element. Plural selectors (those that start with two dollar signs) will always return an iteratable nodelist of all the matching elements. $q, $$q - Get Elements by CSS Path (JQuery-style selectors) Examples: Get all divs of the  Panel  class: var panelDivs = $$q(“div .Panel”); Get all divs and tables that have the hidden attribute set: var hiddenElements = $$q(“div [hidden], table [hidden]“); Get the first li of the  .Selected  class beneath the ul named  MasterList : var selectedElement = $q(“ul#MasterList li”); $ - Get element by ID Get an element based on it’s HTML id .  Since...