Skip to content
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.



Scrutinizer Code Quality Build Status


Flexible, highly configurable widget system replace an HTML place holder with any content.

The main purpose for this package was to be used alongside a text editor like CKEditor to implement a flexible widget system for the end user(!/guide/widget_sdk_tutorial_1)

This package will provide a nice and neat interface to create widgets ready to use in any project, there are a lots of feature straight out of the box, but with its flexible nature can fit any need.

There are two main ways to use this package:

  • Use the widget system standalone as easy way to render HTML
  • Use the widget system with the integrated parser

To use the widget standalone:

  1. Create an instance of \MHDev\WidgetCore\MH_Widget
  2. Call the instance as a function (to trigger the magic __invkoke) passing two arguments (one optional): namespace, config array
  3. under the hood the class will:
    • create a new instance of the requested widget in the given namespace(or use the default one \MHDev\Widgets\ and pass the config object
    • call the instance as function (to trigger the magic __invkoke) and return the result

The single widget workflow is:

  1. from the magic invoke the the controller method is called
  2. the controller method call the model method to get data
  3. the controller will call and return the view method passing the data from the model
    • if the prevent_view kay is found in the config array the controller will return the data from the model without call the view

###Using the parser With the integrated parser you can use a custom non-standard html tag mhwidget with attributes to render content from the widget, and example of a working tag:

<mhwidget size="128" email="">Gravatar</mhwidget>

##Under the hood

To be a proper widget the class must extend the WidgetAbstract class and override the __invoke, controller, model and view methods,


Simple hello world

$widget = new \MHDev\WidgetCore\MH_Widget("\MHDev\Widgets\\");
echo $widget("Example\HelloWorld");


$widget = new \MHDev\WidgetCore\MH_Widget("\MHDev\Widgets\\");
echo $widget("Gravatar", ["email" => "", "size" => 80]);

##Example To see the package in action run the following(php must be available in the console):

git clone
cd MH_Widget
php -S localhost:8080 -t ./Example

the open your browser to http://localhost:8080




Please, send me your feedback, using the issue tracker on github or via email to info[at]


There are no external dependencies but the Parser require the native DOMDocument class and a the widget tag syntax must be right to work properly



You can’t perform that action at this time.