roc / Borax

PHP web framework

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

About

PHP web framework


Languages

Language:PHP 100.0%