SlideShare une entreprise Scribd logo
1  sur  39
Fairfield County PHP Meetup




 Modular PHP dev using
CodeIgniter Bonfire
About Jeff Fox (@jfox015)
• Senior Level Web Developer
• Veteran of two browser wars and the dot-
  com bubble

• Fully self taught
• Studied Art and Music Production
• Baseball enthusiast (ney fanatic)
Meetup Overview
• MVC, CodeIgniter and HMVC in 5
    mins.
•   Intro to Bonfire (more than 5
    minutes)
•   Anatomy of a Bonfire Module
•   Practical Example
•   Q&A
Modular Development

Taking HUGE monolithic applications




and breaking them into manageable pieces
Modular Development

    "How the heck do we do that?"
Model, View, Controller




     Controllers
     handle requests




Models                      Views
                            present information
represent data
                            to the user
CodeIgniter
CodeIgniter



•    Popular Open Source PHP Framework

•    Simple MVC Based Architecture

•    Tons of tools and libraries to utilize in site
     development workflow

•    Flexible View system

•    Known for performance and documentation
CodeIgniter
CodeIgniter



•    Originally built and released by Ellis Labs, the
     Expression Engine people

•    "Reactor" is the community driven build and
     release initiative

•    Core team of developers oversee active
     development and releases

•    One of the "big three" PHP Frameworks
CodeIgniter
CodeIgniter




Application Flowchart
Hierarchical Model, View,
  Controller

HMVC Triads
call on and use other
MVC triads to
accomplish goals of
the application
CodeIgniter
  Bonfire
Bonfire Basics
CodeIgniter



• Open Source library built on top of
     CodeIgniter

• HMVC design using Modular Extensions
• Pre-built Administrative Dashboard
• Rich user authentication workflow
• Variety of site admin tools and utilities
Bonfire Basics
CodeIgniter



• Dashboard utilizes "contexts" for building
     admin tools

• Database migrations manage upgrades
     and fallbacks

• Custom Model class with built in SQL
     helper functionality

• Several classes of abstract controllers
Bonfire Basics
CodeIgniter



• Includes a system of roles to assign to
  users
• Robust permissions allows for precise
     control over site privileges and user
     access
•    Standard system for storing and
     accessing site settings
•    Includes a Module Builder wizard to
     generate fully compatible new modules
Functional Highlights
CodeIgniter



• Contexts provide a loosely coupled way
     to build Admin tools

• Naming conventions prevent hard coding
     menus

• Each module can have its own admin
     tools and still stay loosely coupled
Functional Highlights
CodeIgniter


Themes and Templates
• UI Based on the Twitter Bootstrap
  libraryBonfire uses a theme and
  template system for views
• Numerous helper functions are
  available to send data to view
  classes, select themes, manually set
  views, set messaging and render the
  content
Functional Highlights
 CodeIgniter


Themes and Templates – Examples
Template::set('current_url',
current_url());

Template::set_message('The comments
selected were successfully deleted.',
'success');

Template::set_view('comments/index');

Template::render();
Functional Highlights
CodeIgniter


Migrations
•    Implements the CodeIgninter Migrations
     class

•    Adds ability for modules to use migrations

•    Auto loading of new migrations on app
     startup (configuable via settings)

•    Can use DBforge or Codeigniter Database
     Class and SQL
Functional Highlights
CodeIgniter



public function up()
{
   $this->dbforge-
>add_column('comments_threads',
array('module' => array('type'=>
'VARCHAR','constraint'   => 255,'default'
      => ''));
}
public function down()
{
   $this->dbforge-
>drop_column("comments_threads","module");
}
Functional Highlights
CodeIgniter


Assets Lib
• Allows you to add JavaScript, images
  and CSS automatically in the head
  and/or footer of the site

Assets::add_js($this->load-
>view('thread_view_js',array('th
read_id'=>$thread_id), true),'in
line');
Functional Highlights
CodeIgniter


Modular Everything
•All core Dashboard features are
 modules
    •   Users         •   Translate Tool
    •   Activities    •   Module Builder
    •   Migrations    •   Logos
    •   Permissions   •   Emailer
    •   Roles         •   UI
    •   Settings      •   Updater
    •   Sysinfo       •   Database
Functional Highlights
CodeIgniter



Easy Install

Two step install
Like Wordpress
Bonfire Team
CodeIgniter




              Lonnie Ezell      Nuno Costa
              Project Founder
                                Ben Evans
                                Icehawg
              Sean Downey and many more on
                                Github.com

              Shawn Crigger
Anatomy of a
Bonfire Module
General Structure
CodeIgniter




• All third party and
     custom modules are
     stored in the "modules"
     folder in the bonfire
     directory.
•    Core modules live in
     the "core_modules"
     folder in the
     application directory.
General Structure
 CodeIgniter


 • Bonfire Modules are like little stand-alone
      CodeIgniter apps

 •    Modules follow the context naming convention
      system to allow access to their controllers
      throughout the site

 •    Can be 100% standalone or work with other
      modules

 •    Optimally can be dropped into other apps
Naming Conventions
 CodeIgniter



Controllers
• Public accessible, add
    controller with a name
    that matches the
    modules folder name
•   Admin Dashboard (Also
    called the Springboard)
    Controllers, add a
    controller that matches
    the context name
Naming Conventions
CodeIgniter




Auto-Resolving Views

• For public views, and index.php to
  the modules "Views" folder
• Admin views, add a folder for the
     matching context in the "Views"
     folder with an index.php file in it.
Naming Conventions
CodeIgniter




Manually Resolving Views
• In the controller, before calling
     Template::render(), add a line to set
     the view using
     Template::set_view('view');
•    Any view from any loaded module
     can be used simply by specifying the
     module path and view name
Config
CodeIgniter




• config.php contains a simple array that
     identifies the module to the application
     and contain it's meta information

• Config folder may contain other files used
     to store information about the app

• Custom routes.php files can be used to
     add additional levels of URL->controller
     routing
Controllers
CodeIgniter




• Contains all controllers used by the
     modules

• Should extend one of the four main
     Bonfire controller types:
      o Base_Controller
      o Front_Controller
      o Authenticated_Controller
      o Admin_Controller
Views
CodeIgniter



• Adding an index.php file to the views
     folder makes it publically accessible

• Adding folders named for supported
     admin contexts with index.php files makes
     them accessible from admin menus

• No limit to number of view files there can
     be, how they're organized outside context
     rules or how they're called
Misc
CodeIgniter



• Models follow general CI model rules.
     Should extend BF_Model to gain Bonfire
     helper functionality.

• Migrations are used to install DB support
     and handle changes

• Language files support translations
• Can add helpers, libraries and assets as
     well
Practical
Example
Q&A
Resources
Resources
 CodeIgniter

 • Bonfire Learning Center
  http://www.
  http://cibonfire.com/docs/guides/

 • Github Repository
  https://github.com/ci-
  bonfire/Bonfire
Resources
 CodeIgniter

 • Tutorials on MVC, HMVC, CodeIgniter
  at http://net.tutsplus.com/

  See MVC for Noobs, CodeIgniter from Scratch,
  HMVC: an Introduction and Application

 • OOWP For Developers Tutorials
  http://www.aeoliandigital.com/archi
  ves/category/oowp
Resources
 CodeIgniter

 Example Modules:
 • News:
   https://github.com/jfox015/Bonfire-
   News

 • Comments:
     https://github.com/jfox015/Bonfire-
     Comments

Contenu connexe

Tendances

Static Analysis Security Testing for Dummies... and You
Static Analysis Security Testing for Dummies... and YouStatic Analysis Security Testing for Dummies... and You
Static Analysis Security Testing for Dummies... and YouKevin Fealey
 
Petit potam slides-rtfm-ossir
Petit potam slides-rtfm-ossirPetit potam slides-rtfm-ossir
Petit potam slides-rtfm-ossirLionelTopotam
 
Setting up a secure development life cycle with OWASP - seba deleersnyder
Setting up a secure development life cycle with OWASP - seba deleersnyderSetting up a secure development life cycle with OWASP - seba deleersnyder
Setting up a secure development life cycle with OWASP - seba deleersnyderSebastien Deleersnyder
 
Neat tricks to bypass CSRF-protection
Neat tricks to bypass CSRF-protectionNeat tricks to bypass CSRF-protection
Neat tricks to bypass CSRF-protectionMikhail Egorov
 
WEBINAR: OWASP API Security Top 10
WEBINAR: OWASP API Security Top 10WEBINAR: OWASP API Security Top 10
WEBINAR: OWASP API Security Top 1042Crunch
 
Security Code Review for .NET - Sherif Koussa (OWASP Ottawa)
Security Code Review for .NET - Sherif Koussa (OWASP Ottawa)Security Code Review for .NET - Sherif Koussa (OWASP Ottawa)
Security Code Review for .NET - Sherif Koussa (OWASP Ottawa)OWASP Ottawa
 
Insight into SOAR
Insight into SOARInsight into SOAR
Insight into SOARDNIF
 
OWASP Top 10 Web Application Vulnerabilities
OWASP Top 10 Web Application VulnerabilitiesOWASP Top 10 Web Application Vulnerabilities
OWASP Top 10 Web Application VulnerabilitiesSoftware Guru
 
Windows logging cheat sheet
Windows logging cheat sheetWindows logging cheat sheet
Windows logging cheat sheetMichael Gough
 
HowYourAPIBeMyAPI
HowYourAPIBeMyAPIHowYourAPIBeMyAPI
HowYourAPIBeMyAPIJie Liau
 
Secure coding presentation Oct 3 2020
Secure coding presentation Oct 3 2020Secure coding presentation Oct 3 2020
Secure coding presentation Oct 3 2020Moataz Kamel
 
API Security Best Practices and Guidelines
API Security Best Practices and GuidelinesAPI Security Best Practices and Guidelines
API Security Best Practices and GuidelinesWSO2
 
A2 - broken authentication and session management(OWASP thailand chapter Apri...
A2 - broken authentication and session management(OWASP thailand chapter Apri...A2 - broken authentication and session management(OWASP thailand chapter Apri...
A2 - broken authentication and session management(OWASP thailand chapter Apri...Noppadol Songsakaew
 
XXE Exposed: SQLi, XSS, XXE and XEE against Web Services
XXE Exposed: SQLi, XSS, XXE and XEE against Web ServicesXXE Exposed: SQLi, XSS, XXE and XEE against Web Services
XXE Exposed: SQLi, XSS, XXE and XEE against Web ServicesAbraham Aranguren
 
0wn-premises: Bypassing Microsoft Defender for Identity
0wn-premises: Bypassing Microsoft Defender for Identity0wn-premises: Bypassing Microsoft Defender for Identity
0wn-premises: Bypassing Microsoft Defender for IdentityNikhil Mittal
 

Tendances (20)

Building active directory lab for red teaming
Building active directory lab for red teamingBuilding active directory lab for red teaming
Building active directory lab for red teaming
 
Static Analysis Security Testing for Dummies... and You
Static Analysis Security Testing for Dummies... and YouStatic Analysis Security Testing for Dummies... and You
Static Analysis Security Testing for Dummies... and You
 
Petit potam slides-rtfm-ossir
Petit potam slides-rtfm-ossirPetit potam slides-rtfm-ossir
Petit potam slides-rtfm-ossir
 
Setting up a secure development life cycle with OWASP - seba deleersnyder
Setting up a secure development life cycle with OWASP - seba deleersnyderSetting up a secure development life cycle with OWASP - seba deleersnyder
Setting up a secure development life cycle with OWASP - seba deleersnyder
 
Neat tricks to bypass CSRF-protection
Neat tricks to bypass CSRF-protectionNeat tricks to bypass CSRF-protection
Neat tricks to bypass CSRF-protection
 
WEBINAR: OWASP API Security Top 10
WEBINAR: OWASP API Security Top 10WEBINAR: OWASP API Security Top 10
WEBINAR: OWASP API Security Top 10
 
Security Code Review for .NET - Sherif Koussa (OWASP Ottawa)
Security Code Review for .NET - Sherif Koussa (OWASP Ottawa)Security Code Review for .NET - Sherif Koussa (OWASP Ottawa)
Security Code Review for .NET - Sherif Koussa (OWASP Ottawa)
 
Insight into SOAR
Insight into SOARInsight into SOAR
Insight into SOAR
 
OWASP Top 10 Web Application Vulnerabilities
OWASP Top 10 Web Application VulnerabilitiesOWASP Top 10 Web Application Vulnerabilities
OWASP Top 10 Web Application Vulnerabilities
 
Windows logging cheat sheet
Windows logging cheat sheetWindows logging cheat sheet
Windows logging cheat sheet
 
Cybersecurity Roadmap for Beginners
Cybersecurity Roadmap for BeginnersCybersecurity Roadmap for Beginners
Cybersecurity Roadmap for Beginners
 
HowYourAPIBeMyAPI
HowYourAPIBeMyAPIHowYourAPIBeMyAPI
HowYourAPIBeMyAPI
 
Secure coding presentation Oct 3 2020
Secure coding presentation Oct 3 2020Secure coding presentation Oct 3 2020
Secure coding presentation Oct 3 2020
 
Hack and Slash: Secure Coding
Hack and Slash: Secure CodingHack and Slash: Secure Coding
Hack and Slash: Secure Coding
 
API Security Best Practices and Guidelines
API Security Best Practices and GuidelinesAPI Security Best Practices and Guidelines
API Security Best Practices and Guidelines
 
Pentesting Android Apps
Pentesting Android AppsPentesting Android Apps
Pentesting Android Apps
 
Jira 101
Jira 101Jira 101
Jira 101
 
A2 - broken authentication and session management(OWASP thailand chapter Apri...
A2 - broken authentication and session management(OWASP thailand chapter Apri...A2 - broken authentication and session management(OWASP thailand chapter Apri...
A2 - broken authentication and session management(OWASP thailand chapter Apri...
 
XXE Exposed: SQLi, XSS, XXE and XEE against Web Services
XXE Exposed: SQLi, XSS, XXE and XEE against Web ServicesXXE Exposed: SQLi, XSS, XXE and XEE against Web Services
XXE Exposed: SQLi, XSS, XXE and XEE against Web Services
 
0wn-premises: Bypassing Microsoft Defender for Identity
0wn-premises: Bypassing Microsoft Defender for Identity0wn-premises: Bypassing Microsoft Defender for Identity
0wn-premises: Bypassing Microsoft Defender for Identity
 

En vedette

ACL in CodeIgniter
ACL in CodeIgniterACL in CodeIgniter
ACL in CodeIgnitermirahman
 
CodeIgniter - PHP MVC Framework by silicongulf.com
CodeIgniter - PHP MVC Framework by silicongulf.comCodeIgniter - PHP MVC Framework by silicongulf.com
CodeIgniter - PHP MVC Framework by silicongulf.comChristopher Cubos
 
CodeIgniter PHP MVC Framework
CodeIgniter PHP MVC FrameworkCodeIgniter PHP MVC Framework
CodeIgniter PHP MVC FrameworkBo-Yi Wu
 
Oop in-php
Oop in-phpOop in-php
Oop in-phpRajesh S
 
Modul 3 Cara Membuat View Pada CodeIgniter
Modul 3 Cara Membuat View Pada CodeIgniterModul 3 Cara Membuat View Pada CodeIgniter
Modul 3 Cara Membuat View Pada CodeIgniterRiki Afriansyah
 
You must know about CodeIgniter Popular Library
You must know about CodeIgniter Popular LibraryYou must know about CodeIgniter Popular Library
You must know about CodeIgniter Popular LibraryBo-Yi Wu
 
Momchil Kyurkchiev Presentation
Momchil Kyurkchiev PresentationMomchil Kyurkchiev Presentation
Momchil Kyurkchiev PresentationStart It Smart
 
Benefits of the CodeIgniter Framework
Benefits of the CodeIgniter FrameworkBenefits of the CodeIgniter Framework
Benefits of the CodeIgniter FrameworkToby Beresford
 
Codeigniter : Two Step View - Concept Implementation
Codeigniter : Two Step View - Concept ImplementationCodeigniter : Two Step View - Concept Implementation
Codeigniter : Two Step View - Concept ImplementationAbdul Malik Ikhsan
 
2014 database - course 3 - PHP and MySQL
2014 database - course 3 - PHP and MySQL2014 database - course 3 - PHP and MySQL
2014 database - course 3 - PHP and MySQLHung-yu Lin
 
Codeigniter
CodeigniterCodeigniter
Codeignitershadowk
 
PHP Frameworks & Introduction to CodeIgniter
PHP Frameworks & Introduction to CodeIgniterPHP Frameworks & Introduction to CodeIgniter
PHP Frameworks & Introduction to CodeIgniterJamshid Hashimi
 
REST API Best Practices & Implementing in Codeigniter
REST API Best Practices & Implementing in CodeigniterREST API Best Practices & Implementing in Codeigniter
REST API Best Practices & Implementing in CodeigniterSachin G Kulkarni
 
Codeigniter : the security and the magic of hook
Codeigniter : the security and the magic of hookCodeigniter : the security and the magic of hook
Codeigniter : the security and the magic of hookAbdul Malik Ikhsan
 
RESTful API Design & Implementation with CodeIgniter PHP Framework
RESTful API Design & Implementation with CodeIgniter PHP FrameworkRESTful API Design & Implementation with CodeIgniter PHP Framework
RESTful API Design & Implementation with CodeIgniter PHP FrameworkBo-Yi Wu
 

En vedette (20)

ACL in CodeIgniter
ACL in CodeIgniterACL in CodeIgniter
ACL in CodeIgniter
 
CodeIgniter - PHP MVC Framework by silicongulf.com
CodeIgniter - PHP MVC Framework by silicongulf.comCodeIgniter - PHP MVC Framework by silicongulf.com
CodeIgniter - PHP MVC Framework by silicongulf.com
 
CodeIgniter PHP MVC Framework
CodeIgniter PHP MVC FrameworkCodeIgniter PHP MVC Framework
CodeIgniter PHP MVC Framework
 
Php mysql ppt
Php mysql pptPhp mysql ppt
Php mysql ppt
 
Codeigniter
CodeigniterCodeigniter
Codeigniter
 
Oop in-php
Oop in-phpOop in-php
Oop in-php
 
Modul 3 Cara Membuat View Pada CodeIgniter
Modul 3 Cara Membuat View Pada CodeIgniterModul 3 Cara Membuat View Pada CodeIgniter
Modul 3 Cara Membuat View Pada CodeIgniter
 
CodeIgniter 3.0
CodeIgniter 3.0CodeIgniter 3.0
CodeIgniter 3.0
 
You must know about CodeIgniter Popular Library
You must know about CodeIgniter Popular LibraryYou must know about CodeIgniter Popular Library
You must know about CodeIgniter Popular Library
 
Momchil Kyurkchiev Presentation
Momchil Kyurkchiev PresentationMomchil Kyurkchiev Presentation
Momchil Kyurkchiev Presentation
 
Benefits of the CodeIgniter Framework
Benefits of the CodeIgniter FrameworkBenefits of the CodeIgniter Framework
Benefits of the CodeIgniter Framework
 
Codeigniter : Two Step View - Concept Implementation
Codeigniter : Two Step View - Concept ImplementationCodeigniter : Two Step View - Concept Implementation
Codeigniter : Two Step View - Concept Implementation
 
2014 database - course 3 - PHP and MySQL
2014 database - course 3 - PHP and MySQL2014 database - course 3 - PHP and MySQL
2014 database - course 3 - PHP and MySQL
 
DB design
DB designDB design
DB design
 
Codeigniter
CodeigniterCodeigniter
Codeigniter
 
PHP Frameworks & Introduction to CodeIgniter
PHP Frameworks & Introduction to CodeIgniterPHP Frameworks & Introduction to CodeIgniter
PHP Frameworks & Introduction to CodeIgniter
 
REST API Best Practices & Implementing in Codeigniter
REST API Best Practices & Implementing in CodeigniterREST API Best Practices & Implementing in Codeigniter
REST API Best Practices & Implementing in Codeigniter
 
Week 3 database design
Week 3   database designWeek 3   database design
Week 3 database design
 
Codeigniter : the security and the magic of hook
Codeigniter : the security and the magic of hookCodeigniter : the security and the magic of hook
Codeigniter : the security and the magic of hook
 
RESTful API Design & Implementation with CodeIgniter PHP Framework
RESTful API Design & Implementation with CodeIgniter PHP FrameworkRESTful API Design & Implementation with CodeIgniter PHP Framework
RESTful API Design & Implementation with CodeIgniter PHP Framework
 

Similaire à Modular PHP Development using CodeIgniter Bonfire

Blisstering drupal module development ppt v1.2
Blisstering drupal module development ppt v1.2Blisstering drupal module development ppt v1.2
Blisstering drupal module development ppt v1.2Anil Sagar
 
ITB_2023_Extend_your_contentbox_apps_with_custom_modules_Javier_Quintero.pdf
ITB_2023_Extend_your_contentbox_apps_with_custom_modules_Javier_Quintero.pdfITB_2023_Extend_your_contentbox_apps_with_custom_modules_Javier_Quintero.pdf
ITB_2023_Extend_your_contentbox_apps_with_custom_modules_Javier_Quintero.pdfOrtus Solutions, Corp
 
Sitecore development approach evolution – destination helix
Sitecore development approach evolution – destination helixSitecore development approach evolution – destination helix
Sitecore development approach evolution – destination helixPeter Nazarov
 
Codestrong 2012 breakout session how to develop your own modules
Codestrong 2012 breakout session   how to develop your own modulesCodestrong 2012 breakout session   how to develop your own modules
Codestrong 2012 breakout session how to develop your own modulesAxway Appcelerator
 
Introduction to Module Development with Appcelerator Titanium
Introduction to Module Development with Appcelerator TitaniumIntroduction to Module Development with Appcelerator Titanium
Introduction to Module Development with Appcelerator TitaniumAaron Saunders
 
Coonti in HelsinkiJS
Coonti in HelsinkiJSCoonti in HelsinkiJS
Coonti in HelsinkiJSCoonti
 
Anna Fedoruk.Theworkflow.DrupalCamp Kyiv 2011
Anna Fedoruk.Theworkflow.DrupalCamp Kyiv 2011Anna Fedoruk.Theworkflow.DrupalCamp Kyiv 2011
Anna Fedoruk.Theworkflow.DrupalCamp Kyiv 2011camp_drupal_ua
 
Innovations in Sencha Tooling and Framework
Innovations in Sencha Tooling and FrameworkInnovations in Sencha Tooling and Framework
Innovations in Sencha Tooling and FrameworkSandeep Adwankar
 
Alibaba Cloud Conference 2016 - Docker Open Source
Alibaba Cloud Conference   2016 - Docker Open Source Alibaba Cloud Conference   2016 - Docker Open Source
Alibaba Cloud Conference 2016 - Docker Open Source John Willis
 
Code igniter development
Code igniter developmentCode igniter development
Code igniter developmentMobiloitte
 
Headless cms architecture
Headless cms architectureHeadless cms architecture
Headless cms architectureKevin Wenger
 
Presentation 1 Web--dev
Presentation 1 Web--devPresentation 1 Web--dev
Presentation 1 Web--devaltsav
 
Beyond Domino Designer
Beyond Domino DesignerBeyond Domino Designer
Beyond Domino DesignerPaul Withers
 
East Coast DevCon 2014: Engine Overview - A Programmer’s Glimpse at UE4
East Coast DevCon 2014: Engine Overview - A Programmer’s Glimpse at UE4East Coast DevCon 2014: Engine Overview - A Programmer’s Glimpse at UE4
East Coast DevCon 2014: Engine Overview - A Programmer’s Glimpse at UE4Gerke Max Preussner
 
Dot net Online Training | .Net Training and Placement online
Dot net Online Training | .Net Training and Placement onlineDot net Online Training | .Net Training and Placement online
Dot net Online Training | .Net Training and Placement onlineGaruda Trainings
 
Get Codeigniter Developement Services From Us
 Get Codeigniter Developement Services From Us Get Codeigniter Developement Services From Us
Get Codeigniter Developement Services From UsJoe_Mason
 

Similaire à Modular PHP Development using CodeIgniter Bonfire (20)

Seminar.pptx
Seminar.pptxSeminar.pptx
Seminar.pptx
 
Blisstering drupal module development ppt v1.2
Blisstering drupal module development ppt v1.2Blisstering drupal module development ppt v1.2
Blisstering drupal module development ppt v1.2
 
ITB_2023_Extend_your_contentbox_apps_with_custom_modules_Javier_Quintero.pdf
ITB_2023_Extend_your_contentbox_apps_with_custom_modules_Javier_Quintero.pdfITB_2023_Extend_your_contentbox_apps_with_custom_modules_Javier_Quintero.pdf
ITB_2023_Extend_your_contentbox_apps_with_custom_modules_Javier_Quintero.pdf
 
Sitecore development approach evolution – destination helix
Sitecore development approach evolution – destination helixSitecore development approach evolution – destination helix
Sitecore development approach evolution – destination helix
 
Codeigniter framework
Codeigniter framework Codeigniter framework
Codeigniter framework
 
Codestrong 2012 breakout session how to develop your own modules
Codestrong 2012 breakout session   how to develop your own modulesCodestrong 2012 breakout session   how to develop your own modules
Codestrong 2012 breakout session how to develop your own modules
 
Introduction to Module Development with Appcelerator Titanium
Introduction to Module Development with Appcelerator TitaniumIntroduction to Module Development with Appcelerator Titanium
Introduction to Module Development with Appcelerator Titanium
 
Coonti in HelsinkiJS
Coonti in HelsinkiJSCoonti in HelsinkiJS
Coonti in HelsinkiJS
 
Anna Fedoruk.Theworkflow.DrupalCamp Kyiv 2011
Anna Fedoruk.Theworkflow.DrupalCamp Kyiv 2011Anna Fedoruk.Theworkflow.DrupalCamp Kyiv 2011
Anna Fedoruk.Theworkflow.DrupalCamp Kyiv 2011
 
Innovations in Sencha Tooling and Framework
Innovations in Sencha Tooling and FrameworkInnovations in Sencha Tooling and Framework
Innovations in Sencha Tooling and Framework
 
Alibaba Cloud Conference 2016 - Docker Open Source
Alibaba Cloud Conference   2016 - Docker Open Source Alibaba Cloud Conference   2016 - Docker Open Source
Alibaba Cloud Conference 2016 - Docker Open Source
 
Code igniter development
Code igniter developmentCode igniter development
Code igniter development
 
Codeinator
CodeinatorCodeinator
Codeinator
 
Headless cms architecture
Headless cms architectureHeadless cms architecture
Headless cms architecture
 
Presentation 1 Web--dev
Presentation 1 Web--devPresentation 1 Web--dev
Presentation 1 Web--dev
 
Beyond Domino Designer
Beyond Domino DesignerBeyond Domino Designer
Beyond Domino Designer
 
East Coast DevCon 2014: Engine Overview - A Programmer’s Glimpse at UE4
East Coast DevCon 2014: Engine Overview - A Programmer’s Glimpse at UE4East Coast DevCon 2014: Engine Overview - A Programmer’s Glimpse at UE4
East Coast DevCon 2014: Engine Overview - A Programmer’s Glimpse at UE4
 
Dot net Online Training | .Net Training and Placement online
Dot net Online Training | .Net Training and Placement onlineDot net Online Training | .Net Training and Placement online
Dot net Online Training | .Net Training and Placement online
 
72d5drupal
72d5drupal72d5drupal
72d5drupal
 
Get Codeigniter Developement Services From Us
 Get Codeigniter Developement Services From Us Get Codeigniter Developement Services From Us
Get Codeigniter Developement Services From Us
 

Dernier

Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 

Dernier (20)

Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 

Modular PHP Development using CodeIgniter Bonfire

  • 1. Fairfield County PHP Meetup Modular PHP dev using CodeIgniter Bonfire
  • 2. About Jeff Fox (@jfox015) • Senior Level Web Developer • Veteran of two browser wars and the dot- com bubble • Fully self taught • Studied Art and Music Production • Baseball enthusiast (ney fanatic)
  • 3. Meetup Overview • MVC, CodeIgniter and HMVC in 5 mins. • Intro to Bonfire (more than 5 minutes) • Anatomy of a Bonfire Module • Practical Example • Q&A
  • 4. Modular Development Taking HUGE monolithic applications and breaking them into manageable pieces
  • 5. Modular Development "How the heck do we do that?"
  • 6. Model, View, Controller Controllers handle requests Models Views present information represent data to the user
  • 7. CodeIgniter CodeIgniter • Popular Open Source PHP Framework • Simple MVC Based Architecture • Tons of tools and libraries to utilize in site development workflow • Flexible View system • Known for performance and documentation
  • 8. CodeIgniter CodeIgniter • Originally built and released by Ellis Labs, the Expression Engine people • "Reactor" is the community driven build and release initiative • Core team of developers oversee active development and releases • One of the "big three" PHP Frameworks
  • 10. Hierarchical Model, View, Controller HMVC Triads call on and use other MVC triads to accomplish goals of the application
  • 12. Bonfire Basics CodeIgniter • Open Source library built on top of CodeIgniter • HMVC design using Modular Extensions • Pre-built Administrative Dashboard • Rich user authentication workflow • Variety of site admin tools and utilities
  • 13. Bonfire Basics CodeIgniter • Dashboard utilizes "contexts" for building admin tools • Database migrations manage upgrades and fallbacks • Custom Model class with built in SQL helper functionality • Several classes of abstract controllers
  • 14. Bonfire Basics CodeIgniter • Includes a system of roles to assign to users • Robust permissions allows for precise control over site privileges and user access • Standard system for storing and accessing site settings • Includes a Module Builder wizard to generate fully compatible new modules
  • 15. Functional Highlights CodeIgniter • Contexts provide a loosely coupled way to build Admin tools • Naming conventions prevent hard coding menus • Each module can have its own admin tools and still stay loosely coupled
  • 16. Functional Highlights CodeIgniter Themes and Templates • UI Based on the Twitter Bootstrap libraryBonfire uses a theme and template system for views • Numerous helper functions are available to send data to view classes, select themes, manually set views, set messaging and render the content
  • 17. Functional Highlights CodeIgniter Themes and Templates – Examples Template::set('current_url', current_url()); Template::set_message('The comments selected were successfully deleted.', 'success'); Template::set_view('comments/index'); Template::render();
  • 18. Functional Highlights CodeIgniter Migrations • Implements the CodeIgninter Migrations class • Adds ability for modules to use migrations • Auto loading of new migrations on app startup (configuable via settings) • Can use DBforge or Codeigniter Database Class and SQL
  • 19. Functional Highlights CodeIgniter public function up() { $this->dbforge- >add_column('comments_threads', array('module' => array('type'=> 'VARCHAR','constraint' => 255,'default' => '')); } public function down() { $this->dbforge- >drop_column("comments_threads","module"); }
  • 20. Functional Highlights CodeIgniter Assets Lib • Allows you to add JavaScript, images and CSS automatically in the head and/or footer of the site Assets::add_js($this->load- >view('thread_view_js',array('th read_id'=>$thread_id), true),'in line');
  • 21. Functional Highlights CodeIgniter Modular Everything •All core Dashboard features are modules • Users • Translate Tool • Activities • Module Builder • Migrations • Logos • Permissions • Emailer • Roles • UI • Settings • Updater • Sysinfo • Database
  • 23. Bonfire Team CodeIgniter Lonnie Ezell Nuno Costa Project Founder Ben Evans Icehawg Sean Downey and many more on Github.com Shawn Crigger
  • 25. General Structure CodeIgniter • All third party and custom modules are stored in the "modules" folder in the bonfire directory. • Core modules live in the "core_modules" folder in the application directory.
  • 26. General Structure CodeIgniter • Bonfire Modules are like little stand-alone CodeIgniter apps • Modules follow the context naming convention system to allow access to their controllers throughout the site • Can be 100% standalone or work with other modules • Optimally can be dropped into other apps
  • 27. Naming Conventions CodeIgniter Controllers • Public accessible, add controller with a name that matches the modules folder name • Admin Dashboard (Also called the Springboard) Controllers, add a controller that matches the context name
  • 28. Naming Conventions CodeIgniter Auto-Resolving Views • For public views, and index.php to the modules "Views" folder • Admin views, add a folder for the matching context in the "Views" folder with an index.php file in it.
  • 29. Naming Conventions CodeIgniter Manually Resolving Views • In the controller, before calling Template::render(), add a line to set the view using Template::set_view('view'); • Any view from any loaded module can be used simply by specifying the module path and view name
  • 30. Config CodeIgniter • config.php contains a simple array that identifies the module to the application and contain it's meta information • Config folder may contain other files used to store information about the app • Custom routes.php files can be used to add additional levels of URL->controller routing
  • 31. Controllers CodeIgniter • Contains all controllers used by the modules • Should extend one of the four main Bonfire controller types: o Base_Controller o Front_Controller o Authenticated_Controller o Admin_Controller
  • 32. Views CodeIgniter • Adding an index.php file to the views folder makes it publically accessible • Adding folders named for supported admin contexts with index.php files makes them accessible from admin menus • No limit to number of view files there can be, how they're organized outside context rules or how they're called
  • 33. Misc CodeIgniter • Models follow general CI model rules. Should extend BF_Model to gain Bonfire helper functionality. • Migrations are used to install DB support and handle changes • Language files support translations • Can add helpers, libraries and assets as well
  • 35. Q&A
  • 37. Resources CodeIgniter • Bonfire Learning Center http://www. http://cibonfire.com/docs/guides/ • Github Repository https://github.com/ci- bonfire/Bonfire
  • 38. Resources CodeIgniter • Tutorials on MVC, HMVC, CodeIgniter at http://net.tutsplus.com/ See MVC for Noobs, CodeIgniter from Scratch, HMVC: an Introduction and Application • OOWP For Developers Tutorials http://www.aeoliandigital.com/archi ves/category/oowp
  • 39. Resources CodeIgniter Example Modules: • News: https://github.com/jfox015/Bonfire- News • Comments: https://github.com/jfox015/Bonfire- Comments