What we‟ll talk about today
1. Case studies
2. Productivity
3. Performance
4. Learnability
5. Themes
6. Assets
7. Plugins
8. Libraries
Yet… What is Mainframe ?
• A PHP framework based on CodeIgniter
• Adds essential functionality that
CodeIgniter is missing
• Focused on web apps
• Best open source tools included
( jQuery, Bootstrap, html5 boilerplate & others)
Yet… What is Mainframe ?
In a few words…
“Mainframe is to CodeIgniter,
what Ubuntu is to Debian”
Vangelis
1. Case studies
ARTIFAX EVENT 4
• 600.000 lines of code(so far)
• The “photoshop” of event management
• Large established client base
• Huge feature set
2. Productivity
• Before we took over development of Event
4,
3 other companies failed to deliver
• Large feature sets delivered weekly
2. Productivity
• Before we took over development of Event
4,
3 other companies failed to deliver
• Large feature sets delivered weekly
• Constant improvement of UI, workflows
2. Productivity
How Mainframe makes you productive ?
• Expands upon the MVC lifestyle
(everything in it‟s right place)
• Keeps CodeIgniter‟s coding style
2. Productivity
How Mainframe makes you productive ?
• Expands upon the MVC lifestyle
(everything in it‟s right place)
• Keeps CodeIgniter‟s coding style
• It won‟t say no if you want to get nasty
2. Productivity
How Mainframe makes you productive ?
• Expands upon the MVC lifestyle
(everything in it‟s right place)
• Keeps CodeIgniter‟s coding style
• It won‟t say no if you want to get nasty
• Absolutely no command line needed
(web and nothing but the web)
4. Learnability
• Mainframe is built upon the “hackathon
effect”
• It‟s so similar to CodeIgniter that
inexperienced developers can‟t tell the
difference
5. Themes
Template library by Colin Williams
1. Setting the Default Template:
$template['active_group'] = 'default„;
$template['default']['template'] = 'template.php';
5. Themes
Template library by Colin Williams
1. Setting the Default Template:
$template['active_group'] = 'default„;
$template['default']['template'] = 'template.php';
2. Defining Regions
$template['default']['regions'] = array(
'header„,
'content„,
'footer„
);
5. Themes
Template library by Colin Williams
1. Setting the Default Template:
$template['active_group'] = 'default„;
$template['default']['template'] = 'template.php';
2. Defining Regions
$template['default']['regions'] = array(
'header„,
'content„,
'footer„
);
3. Defining Parsers
$template['default']['parser'] = 'smarty_parser„;
Template will call smarty_parser::parse()
$template['default']['parser'] = 'frog_parser„;
$template['default']['parser_method'] = 'frog„;
Template will call frog_parser::frog();
• … And 9 more steps
5. Themes
Where in Mainframe you just do…
$this->load->theme(„Simplicity‟);
…in the controller‟s constructor
6. Assets
3rd party assets libraries for CodeIgniter
Things are a bit better here
There are a few nice libraries
But….
6. Assets
3rd party assets libraries for CodeIgniter
• They are usually abandoned after a while
• They don‟t support minifying/compression
• They don‟t support server side LESS/SASS
• They are not integrated into a theming
system
6. Assets
Mainframe supports
• Integration with the theming system
• Server side LESS
• Server side minification of
JavaScript/CSS/LESS
• Intelligent caching control
• Asset ordering
6. Assets
Sounds a lot but it‟s easy
$this->load->js(„javascript.js‟);
$this->load->css(„stylesheet.css‟);
$this->load->less(„stylesheet.less‟);
In either your theme or your views
6. Assets
Or if you are feeling bohemian
js(„javascript.js‟);
css(„stylesheet.css‟);
less(„stylesheet.less‟);
7. Plugins
Let‟s have a look at the most
popular system for adding support for
Modules / Plugins / HMVC / Whatever you want to call it
“Modular Extensions – HMVC”
by
Wiredesignz
First let‟s look at the documentation…
7. Plugins
In Mainframe
Just place your files in
/app/plugins/plugin_name/
Using the exact same structure as in plain CodeIgniter
/models
/views
/controllers
/helpers
8. Libraries
Libraries in Mainframe have a special place
in /libs
They are grouped by language like so:
• Css
• Js
• Php
• CodeIgniter
• Common
8. Libraries
CodeIgniter is a library ?
• Well… technically no.
• But by treating it as one we have a very
simple upgrade procedure for the times a
new CodeIgniter version is released.
• Delete the old folder, paste the new one.
You don‟t have to touch anything else.
8. Libraries
• Mainframe supports multiple apps all running
from a single installation
• For example you can have
www.deskhot.com
mobile.deskhot.com
intranet.deskhot.com
• “Common” contains all the code you want
shared by all these applications. For example
your custom image resize helper.