Back to Comparison to Sitellite CMS.
In both frameworks, apps live in their own folders. In Sitellite, this is in inc/app/appname
but in Elefant it's just apps/appname
.
Sitellite calls its handlers ""boxes"" and they live in the boxes
folder of an app. Elefant just calls them handlers, and they live in the handlers
folder of an app.
Sitellite boxes are each separate folders named for the box name, and include an index.php
file, an optional settings.php
for box chooser settings, and access.php
for setting access restrictions for the box. Relying on folder names is cumbersome in many text editors, especially tabbed editors where you end up with a handful of tabs all named index.php
.
Elefant is much simpler, just having files named after the handler name in a handlers
folder. For example apps/myapp/handlers/myhandler.php
. Access control and other settings are set directly in PHP on an as-needed basis.
In Sitellite, you can call one box from another via:
<?php
echo loader_box ('app/box', $params);
?>
In Elefant, the equivalent is:
<?php
echo $this->run ('app/handler', $params);
?>
In Sitellite, there is always a $parameters
array of request values. In Elefant, there are simply the $_GET
and $_POST
superglobals. However, if parameters came from another handler, they will be in a $data
array, and if they came from the URL (e.g., /myapp/myhandler/param1/param2
) then they will be in a numeric array of parameters called $this->params
. In the URL /myapp/myhandler/param1/param2
, $this->params[0]
would contain ""param1"" because the earlier parts of the URL already matched the handler itself.
You can check if a request came from another handler via:
<?php
if ($this->internal) {
// came from another handler
} else {
// direct request to this handler
}
?>