Your non-invasive, lightweight, fast, dev-tool framework
The framework's core structure is dedicated to solve the leaked scope and procedural ancestry of PHP. That said, it's nothing but a language extension.
Here is the very verbose HelloWorld.php example using the elpho/lang package:
<?php
   //Composer
   require 'vendor/autoload.php';
   //Tell the framework what's your entry class using registerMain
   //If it's the same as your filename you can leave it out
   //registerMain("HelloWorld");
   use elpho\lang\Text;
   //The class name is same as file without ".php"
   class HelloWorld{
      //Entry method ($args is a parsed php://input)
      public static final function main($args=array()){
         //Wrapper class with lots of functions
         //Not really useful here
         $word = new Text("Hello World!");
         //It calls toString() using PHP magic methods
         print($word);
      }
      //(optional) Shutdown method
      public static final function shutdown(){
      }
   }
?>Here is the "Hello World" using the elpho/mvc package:
<?php
   namespace myProject;
   //Composer
   require 'vendor/autoload.php';
   //Tell the framework what's your entry class
   registerMain('myProject\\Index');
   use elpho\mvc\Router;
   //The entry class
   class Index{
      public static final function main($args=array()){
         //Router
         $router = Router::getInstance(__DIR__);
         $router->map("", array("Home", "index"));
      }
   }
?><?php
   use elpho\mvc\Controller;
   use elpho\mvc\View;
   //Home controller
   class Home extends Controller{
      public static function index($args){
         //Ideally use the mvc.View class
         $view = new View("template.html.php");
         $view->myMessageAttribute = "Hello World!";
         $view->render();
      }
   }
?><!-- template.html.php -->
<!DOCTYPE html>
<html>
   <body>
      <p><?=$viewbag->myMessageAttribute?></p>
   </body>
</html>   #.htaccess
   RewriteEngine On
   RewriteRule (.*) Index.php [QSD,L]
The system folder contains all the framework core files.
Userland functions are declared in the file system/topLevel.php, they are:
- 
registerMain(className)This method is used when you need to tell elpho that your exposed file has a different name from the entry class (i.e. when it's namespaced). Just pass the main class fullname and it will call it when it finishes loading your app.
- 
call(function [, argument...])An alias tocall_user_func.
- 
apply(function , argumentArray)An alias tocall_user_func_array.
- 
matchTypes(type [, type]...)Returns true if the list of arguments in the current function matches the types passed to it.
This framework is a work in progress.
Mail me at spark.crz(at)gmail.com if you wanna chat!
Or join ##php and ##php-br channels at freenode.net IRC servers