Coding Style

A sample structure of a KISSMVC controller function is shown below:

<?php
//This is an example of a KISSMVC controller
//It is simply a function, which will be called by an URL such as:
//http://example.com/article/show/234
//TIP: Please assign default values to all parameters

function _show($articleid=0) {

//SECTION 1: INPUTS
//Filter, sanitize and store all inputs used by this controller
  
$articleid=min(0,(int)$articleid); //zero or positive integer
  
$uid = isset($_SESSION['authuid']) ? $_SESSION['authuid'] : 0;
  
$someconfig $GLOBALS['registry']['someconfig'];

//SECTION 2: LOGIC
//Call functions/objects that implement your business logic with the inputs from SECTION 1
//Data returned from your Model should not contain UI specifics (such as html code)
  
$loggedinuser = new User();
  
$loggedinuser->retrieve($uid);

  
$article = new Article();
  
$article->retrieve($articleid);

//SECTION 3: PRESENTATION
//Call the view templates with the data obtained from SECTION 2
//A change in UI should only affect code in this section
//Sometimes there is no output needed, only a header redirect is returned
  
if (!$loggedinuser->hasPermission('view_article')) {
    
$vars['body']='<p class="error">You have no permission to access this page!</p>';
    
View::do_dump(APP_PATH.'views/mainlayout.php',$vars);
    exit;
  }
  
  
$vars['article']=$article;
  
//article template is defined in views/layout/view_article.php
  
$vars['body']=View::do_fetch('layouts/view_article.php',$vars);
  
View::do_dump(APP_PATH.'views/mainlayout.php',$vars);
}