SlideShare a Scribd company logo
1 of 47
MainframePHP
The fast PHP framework
Vangelis Bibakis
@ JoomlaDay Greece 2013
About your speaker
Founder: DemianLabs.com
CTO: AdAxem.eu
Creator of: MainframePHP
& many micro web apps
@bibakis
bibakisv@gmail.com
Hey, thanks professor !
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
1. Case studies
If Event 4 was a Greek startup
it would be bigger than…
1. Case studies
If Event 4 was a Greek startup
it would be bigger than…
• CSS Igniter
1. Case studies
If Event 4 was a Greek startup
it would be bigger than…
• CSS Igniter
• Incrediblue
1. Case studies
If Event 4 was a Greek startup
it would be bigger than…
• CSS Igniter
• Incrediblue
• Workable
1. Case studies
If Event 4 was a Greek startup
it would be bigger than…
• CSS Igniter
• Incrediblue
• Workable
Combined…
1. Case studies
• DeskHot.com
Bookmark manager, SaaS
• MobileTest.me
Micro web app, responsive design testing
• ConvertPSD2HTML.com
Slicing service, defunct (RIP)
• RandomTextGenerator.com
Micro web app, #1 in it‟s class
2. Productivity
• Before we took over development of Event
4,
3 other companies failed to deliver
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 ?
2. Productivity
How Mainframe makes you productive ?
• Expands upon the MVC lifestyle
(everything in it‟s right place)
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)
3. Performance
• 45.000 monthly unique visitors on our
main server
3. Performance
• 45.000 monthly unique visitors on our
main server
• On a small VPS with 384mb of RAM
(that‟s less memory than your phone)
4. Learnability
• Mainframe is built upon the “hackathon
effect”
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
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.
Peace & simple living

More Related Content

What's hot

Introduction to PHP H/MVC Frameworks by www.silicongulf.com
Introduction to PHP H/MVC Frameworks by www.silicongulf.comIntroduction to PHP H/MVC Frameworks by www.silicongulf.com
Introduction to PHP H/MVC Frameworks by www.silicongulf.comChristopher Cubos
 
ECS19 - Vesa Juvonen - SharePoint and Office 365 Development PowerClass
ECS19 - Vesa Juvonen - SharePoint and Office 365 Development PowerClassECS19 - Vesa Juvonen - SharePoint and Office 365 Development PowerClass
ECS19 - Vesa Juvonen - SharePoint and Office 365 Development PowerClassEuropean Collaboration Summit
 
Yii 2.0 overview - 1 of 2
Yii 2.0 overview - 1 of 2Yii 2.0 overview - 1 of 2
Yii 2.0 overview - 1 of 2Cassiano Surek
 
Yii Framework Security
Yii Framework SecurityYii Framework Security
Yii Framework SecurityIlko Kacharov
 
Entity Framework 7: What's New?
Entity Framework 7: What's New?Entity Framework 7: What's New?
Entity Framework 7: What's New?Ricardo Peres
 
Resources for Navigating Drupal Upgrades: Versions 6 Through 8 And What It Me...
Resources for Navigating Drupal Upgrades: Versions 6 Through 8 And What It Me...Resources for Navigating Drupal Upgrades: Versions 6 Through 8 And What It Me...
Resources for Navigating Drupal Upgrades: Versions 6 Through 8 And What It Me...Steve Kessler
 
Alfresco Day Stockholm 2015 - Rapid UI Development
Alfresco Day Stockholm 2015 - Rapid UI DevelopmentAlfresco Day Stockholm 2015 - Rapid UI Development
Alfresco Day Stockholm 2015 - Rapid UI DevelopmentNicole Szigeti
 
Practical Application of API-First in microservices development
Practical Application of API-First in microservices developmentPractical Application of API-First in microservices development
Practical Application of API-First in microservices developmentChavdar Baikov
 
O365Con18 - SharePoint Framework for Administrators - Waldek Mastykarz
O365Con18 - SharePoint Framework for Administrators - Waldek MastykarzO365Con18 - SharePoint Framework for Administrators - Waldek Mastykarz
O365Con18 - SharePoint Framework for Administrators - Waldek MastykarzNCCOMMS
 
Flex en silverlight viewer configuratie, Esri, Mark Jagt, Boudewijn Boogaard
Flex en silverlight viewer configuratie, Esri, Mark Jagt, Boudewijn BoogaardFlex en silverlight viewer configuratie, Esri, Mark Jagt, Boudewijn Boogaard
Flex en silverlight viewer configuratie, Esri, Mark Jagt, Boudewijn BoogaardEsri Nederland
 
Process Orchestration with Flowable and Spring Boot
Process Orchestration with Flowable and Spring BootProcess Orchestration with Flowable and Spring Boot
Process Orchestration with Flowable and Spring BootChavdar Baikov
 
Yii PHP MVC Framework presentation silicongulf.com
Yii PHP MVC Framework presentation silicongulf.comYii PHP MVC Framework presentation silicongulf.com
Yii PHP MVC Framework presentation silicongulf.comChristopher Cubos
 
RIA with Flex & PHP - Tulsa TechFest 2009
RIA with Flex & PHP  - Tulsa TechFest 2009RIA with Flex & PHP  - Tulsa TechFest 2009
RIA with Flex & PHP - Tulsa TechFest 2009Jason Ragsdale
 
Supercharge Your SharePoint Framework Webpart with React
Supercharge Your SharePoint Framework Webpart with ReactSupercharge Your SharePoint Framework Webpart with React
Supercharge Your SharePoint Framework Webpart with ReactEric Overfield
 

What's hot (20)

yii1
yii1yii1
yii1
 
Introduction to PHP H/MVC Frameworks by www.silicongulf.com
Introduction to PHP H/MVC Frameworks by www.silicongulf.comIntroduction to PHP H/MVC Frameworks by www.silicongulf.com
Introduction to PHP H/MVC Frameworks by www.silicongulf.com
 
PHP Framework Battle
PHP Framework BattlePHP Framework Battle
PHP Framework Battle
 
ECS19 - Vesa Juvonen - SharePoint and Office 365 Development PowerClass
ECS19 - Vesa Juvonen - SharePoint and Office 365 Development PowerClassECS19 - Vesa Juvonen - SharePoint and Office 365 Development PowerClass
ECS19 - Vesa Juvonen - SharePoint and Office 365 Development PowerClass
 
Widgets neil
Widgets neilWidgets neil
Widgets neil
 
Yii 2.0 overview - 1 of 2
Yii 2.0 overview - 1 of 2Yii 2.0 overview - 1 of 2
Yii 2.0 overview - 1 of 2
 
Yii Framework Security
Yii Framework SecurityYii Framework Security
Yii Framework Security
 
Yii framework
Yii frameworkYii framework
Yii framework
 
Entity Framework 7: What's New?
Entity Framework 7: What's New?Entity Framework 7: What's New?
Entity Framework 7: What's New?
 
Resources for Navigating Drupal Upgrades: Versions 6 Through 8 And What It Me...
Resources for Navigating Drupal Upgrades: Versions 6 Through 8 And What It Me...Resources for Navigating Drupal Upgrades: Versions 6 Through 8 And What It Me...
Resources for Navigating Drupal Upgrades: Versions 6 Through 8 And What It Me...
 
Alfresco Day Stockholm 2015 - Rapid UI Development
Alfresco Day Stockholm 2015 - Rapid UI DevelopmentAlfresco Day Stockholm 2015 - Rapid UI Development
Alfresco Day Stockholm 2015 - Rapid UI Development
 
Practical Application of API-First in microservices development
Practical Application of API-First in microservices developmentPractical Application of API-First in microservices development
Practical Application of API-First in microservices development
 
O365Con18 - SharePoint Framework for Administrators - Waldek Mastykarz
O365Con18 - SharePoint Framework for Administrators - Waldek MastykarzO365Con18 - SharePoint Framework for Administrators - Waldek Mastykarz
O365Con18 - SharePoint Framework for Administrators - Waldek Mastykarz
 
Flex en silverlight viewer configuratie, Esri, Mark Jagt, Boudewijn Boogaard
Flex en silverlight viewer configuratie, Esri, Mark Jagt, Boudewijn BoogaardFlex en silverlight viewer configuratie, Esri, Mark Jagt, Boudewijn Boogaard
Flex en silverlight viewer configuratie, Esri, Mark Jagt, Boudewijn Boogaard
 
Yii Introduction
Yii IntroductionYii Introduction
Yii Introduction
 
Best PHP Frameworks
Best PHP FrameworksBest PHP Frameworks
Best PHP Frameworks
 
Process Orchestration with Flowable and Spring Boot
Process Orchestration with Flowable and Spring BootProcess Orchestration with Flowable and Spring Boot
Process Orchestration with Flowable and Spring Boot
 
Yii PHP MVC Framework presentation silicongulf.com
Yii PHP MVC Framework presentation silicongulf.comYii PHP MVC Framework presentation silicongulf.com
Yii PHP MVC Framework presentation silicongulf.com
 
RIA with Flex & PHP - Tulsa TechFest 2009
RIA with Flex & PHP  - Tulsa TechFest 2009RIA with Flex & PHP  - Tulsa TechFest 2009
RIA with Flex & PHP - Tulsa TechFest 2009
 
Supercharge Your SharePoint Framework Webpart with React
Supercharge Your SharePoint Framework Webpart with ReactSupercharge Your SharePoint Framework Webpart with React
Supercharge Your SharePoint Framework Webpart with React
 

Similar to Mainframe, the fast PHP framework

5 Common Mistakes You are Making on your Website
 5 Common Mistakes You are Making on your Website 5 Common Mistakes You are Making on your Website
5 Common Mistakes You are Making on your WebsiteAcquia
 
Profiling and Tuning a Web Application - The Dirty Details
Profiling and Tuning a Web Application - The Dirty DetailsProfiling and Tuning a Web Application - The Dirty Details
Profiling and Tuning a Web Application - The Dirty DetailsAchievers Tech
 
Standardizing and Managing Your Infrastructure - MOSC 2011
Standardizing and Managing Your Infrastructure - MOSC 2011Standardizing and Managing Your Infrastructure - MOSC 2011
Standardizing and Managing Your Infrastructure - MOSC 2011Brian Ritchie
 
Best Practices for Building WordPress Applications
Best Practices for Building WordPress ApplicationsBest Practices for Building WordPress Applications
Best Practices for Building WordPress ApplicationsTaylor Lovett
 
Increasing velocity via serless semantics
Increasing velocity via serless semanticsIncreasing velocity via serless semantics
Increasing velocity via serless semanticsKfir Bloch
 
Introduction to Micronaut - JBCNConf 2019
Introduction to Micronaut - JBCNConf 2019Introduction to Micronaut - JBCNConf 2019
Introduction to Micronaut - JBCNConf 2019graemerocher
 
Northeast PHP - High Performance PHP
Northeast PHP - High Performance PHPNortheast PHP - High Performance PHP
Northeast PHP - High Performance PHPJonathan Klein
 
Symfony2 for legacy app rejuvenation: the eZ Publish case study
Symfony2 for legacy app rejuvenation: the eZ Publish case studySymfony2 for legacy app rejuvenation: the eZ Publish case study
Symfony2 for legacy app rejuvenation: the eZ Publish case studyGaetano Giunta
 
Sitecore development approach evolution – destination helix
Sitecore development approach evolution – destination helixSitecore development approach evolution – destination helix
Sitecore development approach evolution – destination helixPeter Nazarov
 
Surviving a Plane Crash, a NU.nl case-study
Surviving a Plane Crash, a NU.nl case-studySurviving a Plane Crash, a NU.nl case-study
Surviving a Plane Crash, a NU.nl case-studypeter_ibuildings
 
12-Step Program for Scaling Web Applications on PostgreSQL
12-Step Program for Scaling Web Applications on PostgreSQL12-Step Program for Scaling Web Applications on PostgreSQL
12-Step Program for Scaling Web Applications on PostgreSQLKonstantin Gredeskoul
 
Performance and scalability with drupal
Performance and scalability with drupalPerformance and scalability with drupal
Performance and scalability with drupalRonan Berder
 
Ohio Devfest - Visual Analysis with GCP
Ohio Devfest - Visual Analysis with GCPOhio Devfest - Visual Analysis with GCP
Ohio Devfest - Visual Analysis with GCPWesley Workman
 
Les nouveautés ASP.NET 5 avec Visual Studio 2015
Les nouveautés ASP.NET 5 avec Visual Studio 2015Les nouveautés ASP.NET 5 avec Visual Studio 2015
Les nouveautés ASP.NET 5 avec Visual Studio 2015MSDEVMTL
 
Netflix oss season 2 episode 1 - meetup Lightning talks
Netflix oss   season 2 episode 1 - meetup Lightning talksNetflix oss   season 2 episode 1 - meetup Lightning talks
Netflix oss season 2 episode 1 - meetup Lightning talksRuslan Meshenberg
 
Performant Django - Ara Anjargolian
Performant Django - Ara AnjargolianPerformant Django - Ara Anjargolian
Performant Django - Ara AnjargolianHakka Labs
 
Continuous Integration at Mollie
Continuous Integration at MollieContinuous Integration at Mollie
Continuous Integration at Molliewillemstuursma
 
Headless cms architecture
Headless cms architectureHeadless cms architecture
Headless cms architectureKevin Wenger
 

Similar to Mainframe, the fast PHP framework (20)

Dev Ops without the Ops
Dev Ops without the OpsDev Ops without the Ops
Dev Ops without the Ops
 
5 Common Mistakes You are Making on your Website
 5 Common Mistakes You are Making on your Website 5 Common Mistakes You are Making on your Website
5 Common Mistakes You are Making on your Website
 
Profiling and Tuning a Web Application - The Dirty Details
Profiling and Tuning a Web Application - The Dirty DetailsProfiling and Tuning a Web Application - The Dirty Details
Profiling and Tuning a Web Application - The Dirty Details
 
Standardizing and Managing Your Infrastructure - MOSC 2011
Standardizing and Managing Your Infrastructure - MOSC 2011Standardizing and Managing Your Infrastructure - MOSC 2011
Standardizing and Managing Your Infrastructure - MOSC 2011
 
Best Practices for Building WordPress Applications
Best Practices for Building WordPress ApplicationsBest Practices for Building WordPress Applications
Best Practices for Building WordPress Applications
 
Increasing velocity via serless semantics
Increasing velocity via serless semanticsIncreasing velocity via serless semantics
Increasing velocity via serless semantics
 
Introduction to Micronaut - JBCNConf 2019
Introduction to Micronaut - JBCNConf 2019Introduction to Micronaut - JBCNConf 2019
Introduction to Micronaut - JBCNConf 2019
 
DevOps demystified
DevOps demystifiedDevOps demystified
DevOps demystified
 
Northeast PHP - High Performance PHP
Northeast PHP - High Performance PHPNortheast PHP - High Performance PHP
Northeast PHP - High Performance PHP
 
Symfony2 for legacy app rejuvenation: the eZ Publish case study
Symfony2 for legacy app rejuvenation: the eZ Publish case studySymfony2 for legacy app rejuvenation: the eZ Publish case study
Symfony2 for legacy app rejuvenation: the eZ Publish case study
 
Sitecore development approach evolution – destination helix
Sitecore development approach evolution – destination helixSitecore development approach evolution – destination helix
Sitecore development approach evolution – destination helix
 
Surviving a Plane Crash, a NU.nl case-study
Surviving a Plane Crash, a NU.nl case-studySurviving a Plane Crash, a NU.nl case-study
Surviving a Plane Crash, a NU.nl case-study
 
12-Step Program for Scaling Web Applications on PostgreSQL
12-Step Program for Scaling Web Applications on PostgreSQL12-Step Program for Scaling Web Applications on PostgreSQL
12-Step Program for Scaling Web Applications on PostgreSQL
 
Performance and scalability with drupal
Performance and scalability with drupalPerformance and scalability with drupal
Performance and scalability with drupal
 
Ohio Devfest - Visual Analysis with GCP
Ohio Devfest - Visual Analysis with GCPOhio Devfest - Visual Analysis with GCP
Ohio Devfest - Visual Analysis with GCP
 
Les nouveautés ASP.NET 5 avec Visual Studio 2015
Les nouveautés ASP.NET 5 avec Visual Studio 2015Les nouveautés ASP.NET 5 avec Visual Studio 2015
Les nouveautés ASP.NET 5 avec Visual Studio 2015
 
Netflix oss season 2 episode 1 - meetup Lightning talks
Netflix oss   season 2 episode 1 - meetup Lightning talksNetflix oss   season 2 episode 1 - meetup Lightning talks
Netflix oss season 2 episode 1 - meetup Lightning talks
 
Performant Django - Ara Anjargolian
Performant Django - Ara AnjargolianPerformant Django - Ara Anjargolian
Performant Django - Ara Anjargolian
 
Continuous Integration at Mollie
Continuous Integration at MollieContinuous Integration at Mollie
Continuous Integration at Mollie
 
Headless cms architecture
Headless cms architectureHeadless cms architecture
Headless cms architecture
 

Recently uploaded

Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
A Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxA Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxAna-Maria Mihalceanu
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Nikki Chapple
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Mark Simos
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024TopCSSGallery
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
Infrared simulation and processing on Nvidia platforms
Infrared simulation and processing on Nvidia platformsInfrared simulation and processing on Nvidia platforms
Infrared simulation and processing on Nvidia platformsYoss Cohen
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...Karmanjay Verma
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Kaya Weers
 
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...Jeffrey Haguewood
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesManik S Magar
 
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...itnewsafrica
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...itnewsafrica
 

Recently uploaded (20)

Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
A Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxA Glance At The Java Performance Toolbox
A Glance At The Java Performance Toolbox
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
Infrared simulation and processing on Nvidia platforms
Infrared simulation and processing on Nvidia platformsInfrared simulation and processing on Nvidia platforms
Infrared simulation and processing on Nvidia platforms
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)
 
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
 
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
 

Mainframe, the fast PHP framework

  • 1. MainframePHP The fast PHP framework Vangelis Bibakis @ JoomlaDay Greece 2013
  • 2. About your speaker Founder: DemianLabs.com CTO: AdAxem.eu Creator of: MainframePHP & many micro web apps @bibakis bibakisv@gmail.com
  • 4. What we‟ll talk about today 1. Case studies 2. Productivity 3. Performance 4. Learnability 5. Themes 6. Assets 7. Plugins 8. Libraries
  • 5. 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)
  • 6. Yet… What is Mainframe ? In a few words… “Mainframe is to CodeIgniter, what Ubuntu is to Debian” Vangelis
  • 7. 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
  • 8.
  • 9. 1. Case studies If Event 4 was a Greek startup it would be bigger than…
  • 10. 1. Case studies If Event 4 was a Greek startup it would be bigger than… • CSS Igniter
  • 11. 1. Case studies If Event 4 was a Greek startup it would be bigger than… • CSS Igniter • Incrediblue
  • 12. 1. Case studies If Event 4 was a Greek startup it would be bigger than… • CSS Igniter • Incrediblue • Workable
  • 13. 1. Case studies If Event 4 was a Greek startup it would be bigger than… • CSS Igniter • Incrediblue • Workable Combined…
  • 14. 1. Case studies • DeskHot.com Bookmark manager, SaaS • MobileTest.me Micro web app, responsive design testing • ConvertPSD2HTML.com Slicing service, defunct (RIP) • RandomTextGenerator.com Micro web app, #1 in it‟s class
  • 15. 2. Productivity • Before we took over development of Event 4, 3 other companies failed to deliver
  • 16. 2. Productivity • Before we took over development of Event 4, 3 other companies failed to deliver • Large feature sets delivered weekly
  • 17. 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
  • 18. 2. Productivity How Mainframe makes you productive ?
  • 19. 2. Productivity How Mainframe makes you productive ? • Expands upon the MVC lifestyle (everything in it‟s right place)
  • 20. 2. Productivity How Mainframe makes you productive ? • Expands upon the MVC lifestyle (everything in it‟s right place) • Keeps CodeIgniter‟s coding style
  • 21. 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
  • 22. 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)
  • 23. 3. Performance • 45.000 monthly unique visitors on our main server
  • 24. 3. Performance • 45.000 monthly unique visitors on our main server • On a small VPS with 384mb of RAM (that‟s less memory than your phone)
  • 25. 4. Learnability • Mainframe is built upon the “hackathon effect”
  • 26. 4. Learnability • Mainframe is built upon the “hackathon effect” • It‟s so similar to CodeIgniter that inexperienced developers can‟t tell the difference
  • 27. 5. Themes Template library by Colin Williams
  • 28. 5. Themes Template library by Colin Williams 1. Setting the Default Template: $template['active_group'] = 'default„; $template['default']['template'] = 'template.php';
  • 29. 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„ );
  • 30. 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
  • 31.
  • 32. 5. Themes Where in Mainframe you just do… $this->load->theme(„Simplicity‟); …in the controller‟s constructor
  • 33. 6. Assets 3rd party assets libraries for CodeIgniter Things are a bit better here There are a few nice libraries But….
  • 34. 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
  • 35. 6. Assets Mainframe supports • Integration with the theming system • Server side LESS • Server side minification of JavaScript/CSS/LESS • Intelligent caching control • Asset ordering
  • 36. 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
  • 37. 6. Assets Or if you are feeling bohemian js(„javascript.js‟); css(„stylesheet.css‟); less(„stylesheet.less‟);
  • 38. 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…
  • 39.
  • 40.
  • 41.
  • 42.
  • 43. 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
  • 44. 8. Libraries Libraries in Mainframe have a special place in /libs They are grouped by language like so: • Css • Js • Php • CodeIgniter • Common
  • 45. 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.
  • 46. 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.
  • 47. Peace & simple living