Skip to content
PHP web framework
PHP
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
app
core
public
script
stub
.gitignore
README
apache-vhost.conf
init.php
util.php

README

HELLO WORLD:

// app/route.class.php
<?php

namespace App;

class Route {
    static function getPatterns () {
        return array(
            '/^$/' => 'home',
        );
    }
}

// app/controller
<?php

namespace App\Controller;
use Core\Controller;

class HomeHtml extends Controller\Html {
    public function index () {
        $this->title = "My First Borax Page";
        $this->message = "Hello World";
        return $this->response;
    }
}

// app/template/home/index.tpl.php
<html>
    <head>
        <title><?php out($this->title); ?></title>
    </head>
    <body>
        <?php out($this->message); ?>
    </body>
</html>

Now install apache-vhost.conf, fix the paths, restart apache and go!

ARCHITECTURE:

1. Apache rewrites all URLs to public/index.php
2. index.php creates a web app runner (Core\Web) and calls handleRequest();
3. App runner a) creates a dispatcher (Core\Dispatcher) with the app (App\Route) and base url routes
              b) encapsulates the HTTP request $request (Core\Request)
              c) encapsulates a user session (App\Session) and injects it into the request
              d) calls processRequest($request) on the dispatcher
4. Dispatcher maps the request to a controller (App\Controller) and calls generateResponse() on it
5. Controller either a) renders a template and returns a response (Core\Response)
                  or b) throws an error or redirect (Core\HttpStatus)
6. Dispatcher returns a response (Core\Response), converting error or redirect if needed first.
7. App runner calls respond() on the response.
8. Response sets headers and echos output.

FILE OVERVIEW:

apache-vhost.conf               // apache virtualhost configuration

stub/                           // Minimal stub app

app/                            // Full example app
|
|-- conf/                       // Conf
|   --- conf.php                // global conf
|   --- local.conf.php          // local host specific conf. rename this to your system hostname, followed by ".conf.php"
|
|-- controller/                 // Controllers
|   --- home.controller.php     // GET /                  - home page
|   --- signout.controller.php  // GET /signout           - deletes session cookie and throws a redirect
|   --- twitter.controller.php  // GET /twitter/start     - throws a redirect to start twitter oauth process
|                               // GET /twitter/callback  - handles twitter oauth callback, signs in, redirects
|
|-- init.php                    // App setup/service registration
|
|-- lib/                        // Lib directory on include path for app specific libs
|   --- date.class.php          // Misc date helpers
|
|-- model/                      // Models
|   --- person.class.php        // Person database model
|
|-- route.class.php             // Url routes
|
|-- schema/                     // Model database schemas
|   --- person.mysql.sql        // Person table schema
|
|-- script/                     // Script classes that extend Core\Script
|-- twitterinfo.class.php       // Looks up twitter user info, optionally authenticated with a user, or manual credentials
|
|-- service/                    // Services
|   --- db.service.php          // mysql database
|   --- memcache.service.php    // memcache client
|   --- memcached.service.php   // memcached client (alternate)
|
|-- session.class.php           // User sessions
|
|-- template/                   // Templates
|   --- error.tpl.php           // http errors
|   --- footer.inc.tpl.php      // global footer
|   --- header.inc.tpl.php      // global header
|   --- home/
|       --- index.tpl.php       // home page
|   --- _page/                  // page templates with no controller
|       --- about.tpl.php       // about page

script/                         // script runners
|-- twitterinfo.php             // runs the app script class
|-- initdb.php                  // runs the core script class

util.php                        // global php helper functions

core/                           // Core framework classes
|
|-- controller/                 // Abstract controllers
|   --- base.class.php          // Base
|   --- form.class.php          // Form (POST) -> must redirect
|   --- html.class.php          // HTML (GET)
|   --- json.class.php          // Base JSON
|   --- jsondelete.class.php
|   --- jsonget.class.php
|   --- jsonpost.class.php
|   --- jsonput.class.php
|   --- page.class.php          // Static html page (GET)
|   --- shared.class.php        // Shared logic
|
|-- db.class.php                // PDO wrapper
|
|-- dispatcher.class.php        // Maps urls to controllers, passing in request objects and returning responses
|
|-- dump.class.php              // Debug dump helper
|
|-- email.class.php             // mb_send_mail wrapper with templating. 
|                               // writes to mail.log instead of sending if define(DISABLE_EMAILS, true);
|
|-- httprequest.class.php       // curl wrapper
|
|-- httpstatus/                 // HTTP status classes
|   --- base.class.php
|   --- baseerror.class.php
|   --- baseredirect.class.php
|   --- ...                     // Individual status classes
|
|-- model.class.php             // ORM
|
|-- relationshipcache.class.php // Foreign key lookup cache
|
|-- request.class.php           // Incoming HTTP request wrapper
|                               // Wraps $_GET $_POST $_COOKIE and $_SERVER
|
|-- response/                   // Response classes
|   --- base.class.php
|   --- html.class.php
|   --- htmlerror.class.php
|   --- json.class.php
|   --- jsonerror.class.php
|   --- redirect.class.php
|
|-- script.class.php            // Script class, with helpers for handling command line args
|-- initdbscript.class.php      // Creates a new database and username
|
|-- servicemanager.class.php    // Static global services manager
|
|-- session.class.php           // Base Session class. Wraps $_SESSION. Manages cache headers
|
|-- twitter.class.php           // Twitter API client
|
|-- url.class.php               // URL encoding, building, parsing class
|
|-- web.class.php               // Web app runner

init.php                        // Framework initialisation

# Web document root

public/                         // Put non static and non framework files in here
|-- index.php                   // Delegates to web app runner
Something went wrong with that request. Please try again.