Simple and Light weight MVC framework in PHP, it serves all stable functionalties like routing (native), caching (phpFastCache), database (Redbeans & PDO), templating (Smarty), authentication (Basic,SSO & Custom), Session/Roles etc.
- XAMP : instructions
- PHP/Copmoser : instructions
If you are starting a fresh project simply follow these steps
- Go to directoy where you want to create your project lests say "/Users/Lucas/Projects/" and run this command
$ composer create-project rudrax/project my_project
Or you can Manually Setup RudraX project or install RudraX in your existing project
$ composer install rudrax/boot --save
If you have used create-project command then this directory structure will be automatically created for you. Otherwise create it manually. and make sure build folder has correct permisson 0777
-app
L controller // Controller/URL Mapping for Project, name of file and class should match
L model //Models being Used in Porject
L view //Smart Templates
-config
L project.properties //Project Properties
-build // Build/Temporary Files created by Framwork, need write permissions
-src // Folder for static files like javascript,html,css
-lib // composer library folder
-index.php
.htaccess
-composer.json // set config->vendor-dir = lib
This file also gets created automatically if you have used create-project. Otherwise create it and copy the code in file, also copy .htaccess in you project.
ini_set('display_errors', 'On');
ini_set('error_reporting', E_ALL);
error_reporting(E_ALL);
error_reporting(E_ALL & ~E_DEPRECATED);
require("./lib/autoload.php");
require_once("./lib/rudrax/boot/RudraX.php");
RudraX::invoke(array(
'RX_MODE_MAGIC' => TRUE,
'RX_MODE_DEBUG' => FALSE,
'PROJECT_ROOT_DIR' => "./"
));
Now we are done with setup, lets start with how to write code in our project.
namespace app\controller {
class MyController extends AbstractController
{
/**
* @RequestMapping(url="login",method="GET",type="template")
* @RequestParams(true)
*/
public function login($model,$username,$password)
{
if($username == "user1" && $password == "xDddfdfd"){
$this->user->setValid(TRUE);
$this->user->role = "USER";
$model->assign("username", $username);
return "welcome"; // 'welcome' is path of smarty tempalte file in view folder
} else {
$this->user->setValid(FALSE);
$model->assign("error", "Wrong credentials");
return "login"; // 'login' is path of smarty tempalte file in view folder
}
}
/**
* @RequestMapping(url="myprofile",method="GET",type="template")
* @RequestParams(true)
*/
public function myprofile($model)
{
if($this->user->isValid()){
$model->assign("username", $this->user->uname);
return "user/myprofile"; // 'user/myprofile' is path of smarty tempalte file in view folder
} else {
$this->user->setValid(FALSE);
$model->assign("error", "You need to login to view this page");
return "login"; // 'login' is path of smarty tempalte file in view folder
}
}
/**
* @RequestMapping(url="info/school/{category}",method="GET",type="json")
* @RequestParams(true)
*/
public function schoolinfo($category)
{
if($this->user->isValid()){
return array( "success" => true, "id" => 23,"name"=>"DAV Public School");
} else {
return array("success" => false,"error"=> "You need to login to view this info");
}
}
}
}
All are method level annotations
- @RequestMapping - URL info - url - url pattern to match - method - request method [GET|POST|PUT|DELETE] - used only if mentioned - type - response type [template|json|data] - data - auth - if url acccess requires basic auth [TRUE|FALSE] - FALSE - cache - if response is cacheable by server [TRUE|FALSE] - FALSE - guestcache - cacheable only if guest user (user not valid) [TRUE|FALSE] - FALSE
- @RequestParams - if query params to be fetched and used in controller. [TRUE|FALSE] - FALSE
- @Role - [user defined values] - used only if mentioned, users with matching $user->{role} will have access to api.
Class Level Annotations
- @Model - [sessionUser] -
- sessionUser - if used then that model will be used as default Session user, Class must extend app\model\AbstractUser
To build project/clear cache/rebuild annotations - Hit this URL from Browser
http://localhost/?RX_MODE_BUILD=TRUE&RX_MODE_DEBUG=TRUE