Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/jwheare/borax

PHP web framework
https://github.com/jwheare/borax

Last synced: about 2 months ago
JSON representation

PHP web framework

Awesome Lists containing this project

README

        

HELLO WORLD:

// app/route.class.php
'home',
);
}
}

// app/controller
title = "My First Borax Page";
$this->message = "Hello World";
return $this->response;
}
}

// app/template/home/index.tpl.php


title); ?>


message); ?>

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