DownloadZeus Framework
A lightweight framework with an annotation-based approach for routing.
Usage
Using annontation @Route you set a unique pattern. When Zeus detect this
pattern in a request, redirects to properly class/method and execute it
STATICALLY.
<?php
namespace MyBlog;
class Post
{
/ @Route("post/show/$id") */
public static function show($id)
{
// code goes here
}
/ @Route("post/create") */
public static function create()
{
// code goes here
}
/ @Route("post/edit/$id") */
public static function edit($id)
{
// code goes here
}
}
?>
Installation
This library can be found on Packagist.
We endorse that everything will work fine if you install this through composer.
Add in your composer.json: {
"require": {
"natanaelsimoes/zeus-framework": "0.1.0"
}
}
or in your bash: $ composer require natanaelsimoes/zeus-framework
You need to create 2 files on your project root folder: zeus.json containing
Zeus configuration (see more at Configuration section below), and index.php
just calling Zeus for the first time.
<?php
include_once 'vendor/autoload.php';
Zeus\Framework::start();
?>
Configuration
To configure Zeus, a zeus.json file needs to be created at project root
folder. Following is the configuration file with all possible parameters.
{
"database": {
"driver": "mysql",
"host": "localhost",
"port": "3306",
"dbname": "information_schema",
"username": "root",
"password": ""
},
"routes": {
"initialDirectory": "src/",
"index": "post"
},
"development": true,
"cache": "xcache"
}
Database
Database connection is provided by Doctrine.
Drivers supported are pdo_mysql, pdo_sqlite, pdo_pgsql, pdo_oci,
pdo_sqlsrv, oci8.
If your project will not use any database, you can remove this parameter.
Routes
! This parameter is MANDATORY !
It tells the framework to look recursively inside initialDirectory for methods
with @Route annotation. When no pattern is given by user (as for homepage),
index informs what pattern to execute.
Development
! This parameter is MANDATORY !
Sets the project to development mode (if true) or production mode (if false)
Cache
If you need to use a cache system, in cache parameter inform which of the
following will be used by framework:
* apc (APC)
* couchbase (Couchbase)
* file (Filesystem, saved on /cache in root)
* mem (Memcached)
* mongodb (MongoDB, not implemented yet)
* phpfile (PhpFile, saved on /cache in root)
* redis (Redis)
* riak (Riak, not implemented yet)
* wincache (WinCache)
* xcache (Xcache)
* zend (ZendData)
* none (No cache is used)
Cache is made currently based on URL. Inside the class/method you want to cache,
do as follow:
/ @Route("post/create") */
public static function create()
{
Zeus\Cache::getInstance()->getCache();
// code goes here
Zeus\Cache::getInstance()->setCache();
}
Method Zeus\Cache::getInstance()->getCache() verifies if there is a valid
cache version of what user requested. If exists, prints and performs exit.
If not valid (expired ttl) or not exists, continues generating the page normaly,
then creates the cached version at Zeus\Cache::getInstance()->setCache().
If your project will not use cache, you can remove this parameter.
Testing
For testing you need to change parameter "url" in test.json providing HTTP
path to test/ folder |