Skip to content
This repository has been archived by the owner on Aug 1, 2021. It is now read-only.

A lightweight framework with an annotation-based approach for routing

License

Notifications You must be signed in to change notification settings

natanaelsimoes/zeus-framework

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Zeus 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

About

A lightweight framework with an annotation-based approach for routing

Resources

License

Stars

Watchers

Forks

Packages

No packages published