<?php 
 
namespace Test; 
 
/** 
 * @class HelloWorld 
 * @brief Simple HelloWorld class to show how the widget system is working 
 * 
 * @copyright  Copyright (c) 2014 Matteo Hertel ([email protected]) 
 * @license    MIT 
 * @version    0.1 
 * @author    Matteo Hertel <[email protected]> 
 */ 
class TestWidget extends \MHDev\WidgetCore\WidgetAbstract { 
 
    /** 
     * @brief Magic contructor  
     *  
     * Gets a config array as parameter and will make that array availabe in the class scope 
     *  
     * @param type $config 
     */ 
    public function __construct($config) { 
        $this->config = $config ? $config : []; 
    } 
 
    /** 
     * The magic invoke is triggered if the instance of the class is called as function 
     *  
     * will call the controller to start the MVC chain and get the result back, the result con be both HTML or an Object 
     *  
     * @return mixed 
     */ 
    public function __invoke() { 
        return $this->controller(); 
    } 
 
    /** 
     * Controller function, will call the model to get data, call the view passing the data from the model and return the result 
     * in the key "prevent_view" is present in the config array, it will return the data from the model 
     * @return type 
     */ 
    protected function controller() { 
        $this->data = $this->model(); 
        return $this->view(); 
    } 
 
    /** 
     * Model function 
     *  
     * this function will do the heavy lifting ie get stuff from the DB, parse documents, calculate the mass of the sun etc 
     * in this case will return an "Hello, World!" 
     * @return object|array|string 
     */ 
    protected function model() { 
 
        return "<h1>Test</h1>"; 
    } 
 
    /** 
     * View function 
     *  
     * this function will generate and return the html markup, it will open and output buffer,  
     * write inside the HTML and return the content of the ob to the controller 
     * @return type 
     */ 
    protected function view() { 
        ob_start(); 
 
        echo $this->data; 
 
        return ob_get_clean(); 
    } 
 
} 
 
 |